Skip to content

v1.5.5 — Minor cycle bundle

Latest

Choose a tag to compare

@github-actions github-actions released this 19 May 21:28

Downloads

Platform File Size
🍎 macOS (Intel + Apple Silicon universal) AMQPush_1.5.5_universal.dmg 11.6 MB
🪟 Windows x64 — NSIS installer AMQPush_1.5.5_x64-setup.exe 3.9 MB
🪟 Windows x64 — MSI installer AMQPush_1.5.5_x64_en-US.msi 5.8 MB
🐧 Linux x64 — Debian/Ubuntu AMQPush_1.5.5_amd64.deb 7.1 MB
🐧 Linux x64 — RPM (Fedora/RHEL) AMQPush-1.5.5-1.x86_64.rpm 7.1 MB
🐧 Linux x64 — portable AMQPush_1.5.5_amd64.AppImage 82 MB

Binaries are not code-signed. macOS Gatekeeper / Windows SmartScreen will warn on first launch.

  • macOS: right-click AMQPush.app → Open → confirm.
  • Windows: click "More info" → "Run anyway" on the SmartScreen dialog.
  • Linux (.AppImage): chmod +x AMQPush_*.AppImage && ./AMQPush_*.AppImage.

[1.5.5] — 2026-05-20

A minor-cycle bundle on top of 1.5.0 — eight features and a handful of QoL fixes that piled up over a week of dogfooding.

Highlights

  • Quick-connect from URL — paste amqp://user:pass@host:port/queue (or amqps:// / ws:// / wss://) into a modal, see a live preview of every parsed field, click Apply to fill the form. No saving yet, no surprises.
  • Import / Export profiles — round-trip the entire profile collection as JSON via the native file picker (tauri-plugin-dialog). Useful for dotfile sharing across machines. Imports accept either the map shape AMQPush exports or a bare array.
  • Configurable publisher send retry — per-profile max attempts + delay. Each user-visible send goes through up to N attempts on transient errors. Disconnect-recovery still happens automatically per attempt (doesn't count against the budget).
  • Saved JMS selectors — a named library reusable across sessions and queues. 📑 dropdown next to the Selector input lists saved entries; click to apply, Save current as… to persist. Overwrite-by-name semantics, stored in localStorage.
  • Broker Clients host grouping — connections from the same host (different ephemeral ports) collapse under a header row with aggregate Cons / Sess / Age. Auto-collapsed on first sight, remembers user expands across polls via useRef<Set>.
  • Property / value autocomplete from history — keys and per-key values mined from history.json surface in the Properties tab. Long _AMQ_* markers are a click away; a small caret next to each value field opens a per-key value picker.
  • Stats per-profile — every track*InStats call writes into a profile-scoped bucket. StatsView gets a profile selector at the top (visible once you've sent on more than one); pick a specific profile or All for a merged aggregate. Useful for prod-vs-staging side-by-side.
  • Chaos tab in Send — four poison-pill toggles for testing consumer error paths: oversized body (pad to N MB), override content-type, malformed JSON (strip last } / ]), strip application property. Applied last, after vars / pre-script. Combine freely.

Added — Connection view

  • Overflow menu in the profile-picker row: Quick-connect from URL, Import profiles, Export profiles.
  • New Publisher send retry card in Advanced — max attempts (1 = disabled) + delay between attempts (ms). Defaults 1 / 250 preserve pre-1.5.x behaviour.

Added — Receive view

  • Saved selectors dropdown (📑) next to the Selector input.
  • Sticky Message ID / Date-Time column header (already in 1.5.0, hardened against legacy-format-mixing via the fmtTimestamp shim).
  • REC closure-bug fix — recordingRef.current is now updated synchronously in toggleRecording, so the buffer starts filling immediately after click instead of waiting for stale closure.

Added — Browser view

  • Selective Purge / Shovel from multi-select selection bar (already in 1.5.0 — additional polish to checkbox alignment in 1.5.5).

Added — Send view

  • Chaos tab — see Highlights.
  • Properties key + value autocomplete from history.
  • The chaosActive dot on the Chaos tab makes it impossible to forget you've left a poison-pill toggle on.

Added — Broker Clients view

  • Per-host grouping with collapsible headers.
  • Aggregate stats in group header rows (sum of Cons / Sess, oldest creation_time → Age, mixed for User / Proto when group is heterogeneous).

Added — Stats view

  • Profile selector in the top bar (All + every profile with non-empty stats).
  • mergeStats(buckets) aggregates throughput / queues / kinds / sizes across profiles.

Added — Help

  • New Highlight rules section in Receive with 9 rule pattern recipes (JSON field match, XML element match, application property, priority threshold, correlation-id, big bodies, whole-word match, etc.).
  • New Chaos helpers section in Send.
  • New Profile picker overflow menu section in Connection.
  • Per-profile Stats paragraph.
  • Newest-first ordering note in Receive.

Changed

  • View titles: SendSend Messages, ReceiveReceive Messages, ClientsBroker Clients.
  • OS window title now reads AMQPush <version> — picked up at runtime via getVersion() / setTitle().
  • Window opens maximised by default.
  • Browser peek Max dropdown goes up to 5000 + All; changing the cap re-peeks immediately (no manual Refresh).
  • Browser + Receive both render full local YYYY-MM-DD HH:MM:SS timestamps. Legacy persisted HH:MM:SS entries get today's date synthesised on display for column consistency.
  • Receive list reversed — newest at the top; underlying array stays chronological for persistence + diff.
  • Per-message Stats counting in Batch / CSV — sentCount / size distribution / per-queue chart reflect actual throughput, not "one click".
  • Mark ref → Ref (single-line label).
  • Workspace combobox replaced the native <datalist> (unreadable in WebKit); workspaces are now deletable with an inline confirm + automatic migration of profiles into Default.

Fixed

  • REC capture buffer didn't fill until the listener closure was rebuilt (recording state was captured by the long-lived listen("message_received") callback at registration time). Fix routes through a recordingRef updated synchronously in toggleRecording.
  • Duplicate Copy button in Receive — the header-level Copy was removed; the Body section's Copy is the canonical one.
  • Browser peek-list checkbox alignment when row has 2 lines of content.
  • ShovelModal Profile / Queue inputs heights mismatched due to WebKit <select> rendering — fixed via appearance-none + h-8 box-border + custom ChevronDown caret.
  • Receive Help docs about Replay — explainer banner inside the modal so first-time users see what speed / target queue / play actually do.

Backend

  • Profile schema gained send_retry_attempts + send_retry_delay_ms; defaults preserve pre-1.5.x behaviour.
  • AmqpClient::send_message wraps the per-attempt logic in a retry loop bounded by these knobs. Inner try_send_once is the same as before; outer loop respects send_retry_delay_ms between failures.
  • profiles::export_to(path) writes the entire collection as pretty JSON; import_from(path, overwrite) accepts map or array shape, runs migrate_profile per entry, returns counts (added / overwritten / skipped / failed).
  • Tauri commands: export_profiles, import_profiles.
  • New deps already pulled in 1.5.0 (tauri-plugin-dialog, fe2o3-amqp-ws, etc.) — no new direct deps in 1.5.5.