Skip to content

Releases: AndorinaAI/Andorina-WhatsApp-Agent-for-Hermes

Andoriña v1.5.2-Beta5

Choose a tag to compare

@AndorinaAI AndorinaAI released this 17 Jun 22:11

Note

Patch release — all fixes are applied automatically on update via the GUI updater.
Versión de parche — todas las correcciones se aplican automáticamente al actualizar desde el panel.

🇺🇸 English

🐛 Bug Fixes

  • Group→Group Semantic Alerts: The pre_llm_call path in webhook.py was building chat_id from the individual sender JID instead of the group JID, so alert rules with a group as the source never fired. Fixed by parsing session_key (whatsapp:group:<GROUP_JID>[:<SENDER>]) to extract the real group @g.us JID. Also passes chat_name for human-readable alert labels.

🇪🇸 Español

🐛 Correcciones de Errores

  • Alertas Semánticas Grupo→Grupo: El path pre_llm_call de webhook.py construía el chat_id a partir del JID del miembro individual en lugar del JID del grupo. Las reglas de alerta con origen de grupo nunca se disparaban. Corregido parseando el session_key (whatsapp:group:<JID_GRUPO>[:<EMISOR>]) para extraer el JID real @g.us. También pasa chat_name para que los labels de las alertas sean legibles.

v1.5.2-Beta4

Choose a tag to compare

@AndorinaAI AndorinaAI released this 15 Jun 19:56

What's new

Fixed

  • RBAC role matching: resolve_role() now uses JID suffix matching, fixing role assignment failures when phone numbers are stored without country prefix.
  • Alert source matching: Replaced unsafe substring check with a clean JID suffix match to prevent false security positives.
  • Away auto-reply: Suffix matching now used when comparing incoming messages against ADMIN_PHONE.
  • Webhook URL detection: Replaced single-tier detection with a robust multi-tier fallback (tunnel headers, external IPs) with a stability flag output.

Added

  • Fuzzy keyword alerts: Dynamic alert rules now support fuzzy_keyword_match — catches plurals and ignores accents.
  • Webhook stability banner: A warning is shown in the panel if the webhook URL is missing, uses a local hostname, or is deemed unstable.
  • JID normalization helpers: Centralized _jid_match and _norm_jid functions across the codebase.

See the full CHANGELOG for details on previous versions.

Andoriña v1.5.2-Beta3

Choose a tag to compare

@AndorinaAI AndorinaAI released this 14 Jun 23:23

What's fixed

Admin not recognized over WhatsApp
is_owner() was failing silently when ADMIN_PHONE didn't include the country prefix. Now uses suffix matching so xxxxxxxxx correctly matches 34xxxxxxxxx. Also added a fallback to the JID's assigned role — if set to owner in the panel, it's always recognized.

Wrong tool permissions with Hermes Native soul
When a contact was assigned __HERMES__ as soul, pre_tool_call tried to load it as a plugin, failed, and silently downgraded tool access to chatbot-level. Reserved soul names are now filtered before plugin resolution.

Soul dropdown in panel reverting to default
Fixed a race condition where selecting "Hermes Native" in the admin panel would snap back to "Default Soul" on next reload.

Soul transition memory
Switching a contact's soul used to wipe the entire conversation history. Now it preserves the user's messages for context continuity while stripping the bot's old responses — the new persona picks up the conversation without being anchored to the previous personality.

Long-term memory (Hindsight) offline
Hindsight (PostgreSQL) was not running and not restarting automatically. Fixed startup, added library compatibility for Ubuntu 24.04, and added a systemd user service for autostart. The admin panel now shows a warning banner when Hindsight is offline, with a one-click Start Memory button.


Files changed

scripts/security/rbac.py · scripts/security/orchestrator.py · scripts/security/orchestrator_hook.py · scripts/security/soul_sync.py · GUI/server.py · GUI/static/app.js · GUI/static/index.html

Andoriña v1.5.2-Beta2

Choose a tag to compare

@AndorinaAI AndorinaAI released this 12 Jun 18:12

Bug fix update. If your bridge was disconnecting or looping the QR code, this fixes it.

What was happening:
Hermes v0.16.0 changed where it stores the WhatsApp session. If your disk had filled up at any point, the credentials file ended up empty and the bridge got stuck retrying every 30 seconds indefinitely.

What's fixed:

  • Session symlink so future Hermes path changes don't break the connection again
  • Installer now checks Hermes >= v0.16.0 is installed and offers to update it automatically if not
  • Installer warns if disk space is below 5GB
  • Auto-updater now handles the symlink, disk monitor setup and config migration automatically
  • New daily disk monitor: sends a WhatsApp alert if free space drops below 85%
  • Fixed a broken injection anchor in patch_whatsapp.py that affected fresh installs on Hermes v0.16.0

To update:

If you already have Andoriña installed, run the updater:
python3 ~/.hermes/skills/andorina/andorina_updater.py --update

If you're installing from scratch, download the zip below and run install.sh.

If your bridge is already stuck on QR:
Stop the gateway, run hermes whatsapp to scan the QR, then start it again. Everything else is handled automatically by the updater.

v1.5.2-Beta1 - Bug Fix Release: Security, Webhooks, note managing & Banner

Choose a tag to compare

@AndorinaAI AndorinaAI released this 10 Jun 22:47

Patch release — all fixes are applied automatically on update via the GUI updater.

🐛 Critical Bug Fixes

  • TUI/CLI Blocked by RBAC: Fixed an issue in orchestrator_hook.py where the owner using the local Hermes TUI was denied all actions. The RBAC permission filter now only applies to incoming WhatsApp messages, allowing local sessions to pass through unconditionally.
  • Webhook Port Hardcoded: Fixed a bug in GUI/server.py where generated webhook URLs incorrectly used a hardcoded 3001 port instead of the actual application port (8888).
  • Contacts Notes (Memory): The updater now adds rules to the internal engine so the agent proactively and silently executes memory commands (note-add and note-read) during conversations.
  • Prompt Updater (SOUL.md): Fixed the updater to ensure it executes the optimization and applies patches to the system prompts on existing installations, which it previously omitted.

✨ Improvements

  • Live Announcement Banner (i18n): Implemented multi-language support for the live banner. It now dynamically fetches the English or Spanish text depending on the selected panel language.
  • Banner Loading: The remote banner now loads every time the panel is opened (not only when an update is pending), and its scroll speed has been slowed down to improve readability.

V1.5.1-Beta1

Choose a tag to compare

@AndorinaAI AndorinaAI released this 07 Jun 19:34

Bug Fixes & Improvements

  • Agenda Deadlock: Resolved the locked update deadlock by utilizing direct file I/O instead of double-locking the JSON file.
  • Crontab Auto-cleanup: Native crontab entries are now automatically removed upon successful message delivery.
  • Stale Crons Purge: Added a cleanup-crons command to dynamically purge stale crontab entries whose script paths or message/recurring IDs no longer exist.
  • CORS Proxy: Implemented a /api/public/banner same-origin proxy in the GUI server to prevent CORS issues when loading the external dynamic banner.
  • UI Adjustments: Fixed the banner layout in the main menu to prevent overlapping with the logo and replaced sparkle separators with dots.
  • Update Badge: Added a background check and navigation badge in the Diagnostics tab to indicate when an update is available.
  • Upload Base64 Fix: Resolved the UnboundLocalError: local variable 'base64' referenced before assignment issue in the /api/upload route.
  • Updater Improvements: The updater now executes the bridge health script (bridge_health.py) to apply repairs/sanitization post-update and automatically restarts the GUI server using Andorina-Panel.sh.

v1.5.0-Beta1 — Core Refactoring & GUI Installer

Choose a tag to compare

@AndorinaAI AndorinaAI released this 07 Jun 10:35

What's new in v1.5.0-Beta1

This release is a near-complete refactoring of the internal architecture. The focus has been stability, security, and simplifying the installation experience.

Major changes

  • New GUI installer (Andorina-Panel.sh) — no more terminal setup for end users
  • Restructured scripts — organized into security/, tools/, transport/ and utils/ modules
  • Zero-trust security layerinput_guard.py, tool_guard.py, and a full output pipeline (DLP, sanitizer, pagination)
  • Sub-Souls — load custom personalities per contact from Markdown files
  • Semantic alerts — keyword-based auto-responses with cooldown
  • Idempotent inbox writes and auto-offset in agenda to prevent race conditions
  • Session detection for WhatsApp Web reconnects
  • Bilingual interface (ES/EN) across the web dashboard and installer

Installation

Fresh install recommended. Follow the instructions in the README.md.

Notes

  • Linux only
  • Beta release — report any issues in the Issues tab
  • Google Contacts OAuth is pre-configured; no API console setup required

v1.0.4-Beta1: Core Consolidation, Automated Diagnostics & Security Hardening

Choose a tag to compare

@AndorinaAI AndorinaAI released this 17 May 13:58

`This beta release introduces major architectural improvements, focusing on unifying core messaging workflows to eliminate technical debt, adding self-healing diagnostics to the WhatsApp bridge, and hardening overall security and state concurrency.

🛠️ Key Technical Improvements

  • Unified Messaging Core (DRY): Centralized HTTP request handling, pacing, and logging into a new shared scripts/common.py module. This eliminates duplicate logic across send.py, files.py, agenda.py, and contacts.py.
  • Self-Healing Bridge Patches: Upgraded bridge_health.py and patch_bridge.py to automatically detect, diagnose, and inject missing API endpoints (/health, /groups, /qr, /typing) into the local agent's bridge.js without manual intervention.
  • Security & Path Hardening:
    • Replaced broad exception handlers with strict except Exception: captures across all Python scripts.
    • Secured setup_portable.py by applying directory-level extraction filters to mitigate path traversal risks.
    • Hardened rate limits and updated loop-detection rules inside the system firewall (guard.py).
  • Atomic Concurrency Control: Standardized file-level locking (fcntl.flock) during concurrent write operations to ensure inbox queues and configuration assets are protected from file corruption.
  • Universal Documentation Sync: Synchronized legal notices, multi-language landing assets, and the manual (SKILL.md) to represent the exact specifications of v1.0.4-Beta1.

🐛 Testing & Bug Reports

This is a Beta release. Please test these features in your local environment. If you encounter any bugs, errors, or unexpected behavior, please open an issue in the GitHub Issues section so we can address it before the final release.
``

v1.0.3-patch1: Operation Hardening (Addressing Previous Bugs)

Choose a tag to compare

@AndorinaAI AndorinaAI released this 14 May 11:01

This beta patch addresses several critical edge cases and bugs found in previous v1.0.3 releases, focusing on stability, guardrails, and automated setup.

🛠️ Key Improvements & Fixes

  • Installer Stability (System Compatibility): Addressed installation failures reported on some specific systems. The installation process has been refined and should work correctly now across environments, but we actively seek user feedback to confirm this stability.
  • Hallucination Guardrails: Added strict exit codes (1) and structured JSON error returns in send.py and contacts.py to prevent AI agents from hallucinating non-existent commands when they fail to match a subcommand.
  • Streamlined Gateway Setup: The setup.py script now automatically handles downloading and placing the Hermes WhatsApp gateway binary to reduce installation failures, though users still need to perform the initial manual linking (QR scan).
  • Refined File Search Protocol: Rewrote the protocol in SKILL.md with a strict 5-step algorithm utilizing localized paths (via xdg-user-dir) to prevent the agent from searching the wrong directories or getting stuck.
  • File Reading Limitations Warning: Added explicit notices for both users and AI agents about the current inability to read binary, video, image, or complex office files (PDF/Office), ensuring the agent asks for precise filenames instead of trying to "read" them.

Note: This is a BETA release to test these fixes and new guardrails. If you previously had issues with the installer, please try again and let us know your feedback!

v1.0.2-hotfix3 — Stability & Visibility Update

Choose a tag to compare

@AndorinaAI AndorinaAI released this 11 May 15:16

This hotfix addresses critical installation and connection issues reported during the beta phase. It ensures a smoother onboarding experience for new users and stabilizes the connection monitoring engine.

🔧 Key Improvements & Fixes:
QR Visibility Fix: Resolved a bug that caused the WhatsApp QR code to be hidden during the initial pairing process.
Bilingual Session Detection: The system now provides real-time feedback (English/Spanish) when a WhatsApp session is already active, preventing redundant restarts.
Installer Resilience: Fixed input stream alignment in install.sh to eliminate EOF errors during automated setup.
Enhanced Terminal Support: Improved autostart terminal detection for Linux desktop environments including KDE, XFCE, MATE, and LXDE.
Global Version Sync: Unified the version string across all scripts, system documentation, and web assets.
📦 Installation Instructions:
Download the attached Andorina-Skill-v1.0.2-hotfix3.zip.
Extract the archive and navigate to the folder.
Run the installer:
bash
bash install.sh
Developed with ❤️ by Jorge. — Andoriña v1.0.2-hotfix3