Skip to content

AgenticX + Machi v0.3.7

Choose a tag to compare

@DemonDamon DemonDamon released this 19 Apr 03:22
· 781 commits to main since this release

AgenticX v0.3.7

Published Python package: agenticx==0.3.7

Installation

pip install -U agenticx==0.3.7

PyPI

Highlights

New capabilities shipped in this release.

  • Core / Runtime / Tools

    • Wired computer_use to desktop tools with abortable invocations so long actions can be cancelled cleanly.
    • Added P0 reliability invariants for the CC integration, including a provider fault denylist and deny-before-confirm paths.
  • Desktop / Electron

    • Overhauled the forwarding UX: avatar/group + history picker, persistent follow-up notes, no accidental /api/chat after a forward, and newly forwarded conversations appear in history immediately.
    • Added message queuing, bash streaming, session interrupt, and running-state indicators (Issue #8).
    • Added agent heartbeat recovery, stall detection, and a runtime config panel relocated to the Tools tab.
    • Moved Settings into the topbar with a theme toggle and login shortcut; copy-message now expands Markdown to plain text.
    • Added MCP row health state with session-scoped bindings and aligned the model service settings UX with Cherry Studio.
    • Added agx account web login and a Settings → Account tab.
    • Added support for custom OpenAI-compatible vendors with more stable local chat networking, and hardened Windows Settings rendering so vendor/lucide edge cases no longer crash the page.
  • Skill Self-Evolution / Learning

    • Introduced a Hermes-style skill self-evolution loop with learning counters wired into the runtime and skill_manage.
    • Added fuzzy-patch application, versioning changelogs, and an enhanced skill guard for safer self-edits.
    • Added a Desktop settings UI to configure self-evolution behavior.
  • Knowledge Base (new)

    • Introduced a Stage-1 local knowledge base MVP with Studio APIs, a settings page, and a knowledge_search tool.
    • Added LiteParse extended formats with LibreOffice detection and a visible parser status surface.
    • Added retrieval-mode selection (Smart vs. Always), default Top-K tuning, and a chat-composer shortcut.
    • Surfaced real vectorization progress as a percentage so long-running ingest is no longer opaque.
  • Automation / Scheduling

    • Each scheduled trigger now spawns a fresh session and supports per-task execution models.
    • Persisted task run logs and added Meta diagnostic tooling for inspecting past runs.
    • Conversations can now update scheduled task configs through meta-tools, with pane switching deferred until the new session is ready.
  • Packaging / CI

    • The Windows NSIS installer now embeds agx-server and the WeChat sidecar for one-click setup, with port-selection and CI observability fixes to the install script.

Fixes & Improvements

Post-0.3.7 bug fixes. Focused on getting the packaged desktop build
(DMG / EXE) to parity with the npm run dev experience — missing
PyInstaller dependencies, chromadb on-disk incompatibility, and a
handful of Electron startup races that left panels blank on first launch.

  • Packaging / Installer

    • Declared python-multipart explicitly so the packaged agx-server no longer crashes on startup (previously killed the binary before any route was reachable).
    • Forced collect_all for chromadb, fitz (PyMuPDF), pypdf, python-docx, python-pptx, and numpy in the PyInstaller spec so PDF/Office ingestion works out of the box on the packaged EXE/DMG (closes #10 — "Document ingestion fails for PDF files / missing numpy" on Windows).
    • Bundled onnxruntime with the desktop backend — it's loaded dynamically by chromadb's default embedder and PyInstaller couldn't discover it statically, causing the packaged build to prompt users to pip install onnxruntime.
    • Fixed chromadb + BailianEmbedding so the shared async session is reused across event loops inside the packaged desktop runtime(previously produced "attached to a different loop" errors on second ingestion).
  • Knowledge Base

    • Replaced the opaque '_type' parse failure with real error details and a full stack in the job log, so failed ingestions are diagnosable instead of silently stuck at 0 chunks.
    • Self-heal on chromadb on-disk incompatibility: recursively detects both KeyError('_type') and ValueError: Could not connect to tenant default_tenant (including when wrapped in other exceptions), then rebuilds the persistent vector directory and retries the operation automatically — no more "ingestion worked in dev but fails in the DMG build".
    • Delete button now always succeeds from the user's point of view: the registry entry is removed first, and a failing vector-store purge degrades to a warning instead of an HTTP 500 that made the button look dead while the record was already gone.
    • Filter out None metadata fields before upserting into chromadb, fixing "Expected metadata value to be a str, int, float or bool, got None" on PDF/DOCX chunks that lacked char_offset.
    • Knowledge panel now re-attaches to a still-running ingestion job when re-opened: instead of being stuck at the last snapshot progress (e.g. 50% forever), it reflects the real backend progress (70%, 90%, done).
    • Missing-LibreOffice hint now gives the correct install command per OS (brew install --cask libreoffice on macOS, official installer link on Windows) instead of a generic message.
  • Desktop / Electron

    • Fixed two main windows opening on some macOS launches by making createWindow() idempotent against app.on("activate") firing during backend warm-up.
    • Registered the full IPC handler set before await startStudioServe(). Previously, app.on("activate") could open the window during the 5–30 s backend cold start and the renderer fired load-agx-account / list-avatars / list-groups / load-automation-tasks / load-feishu-binding / load-mcp-status into unregistered handlers — making the first launch look like the user was logged out with 0 agents and no history, only for everything to "come back" on restart.

Stats

  • Commits: 13 commits over 2 days (2026-04-19 → 2026-04-20)

Full Changelog