Skip to content

Release v0.1.19

Overview

G-Agent v0.1.19 is a runtime reliability release for live Telegram operation, stuck-session recovery, approval continuations, and visual identity/selfie generation through the current OmniRoute Codex image path.

This release keeps the existing local-first architecture intact and focuses on bugs observed in real channel logs: PAP/selfie requests being routed as normal chat, Telegram slash commands being swallowed, /new not clearing runtime checkpoints, approval follow-ups being blocked by the busy-session guard, and OpenAI-compatible image generation using stale image-model assumptions.

Highlights

  • Deterministic PAP/selfie routing: explicit Indonesian PAP/selfie/photo requests now execute the selfie tool before normal LLM routing, so messages such as pap, minta pap, PAP!!!!, and papppp no longer depend on model interpretation.
  • Telegram command recovery: Telegram slash commands now await the shared async dispatcher and the Telegram command menu is generated from the router registry instead of a stale hardcoded list.
  • Busy-session repair: stale running checkpoints are marked stale, approval follow-ups can continue blocked tasks, and /new//reset cancel running task checkpoints in addition to archiving chat history.
  • Codex image model alignment: OpenAI-compatible image generation now supports the current Codex image-capable model IDs: cx/gpt-5.5, cx/gpt-5.4, and cx/gpt-5.3-codex.
  • Image endpoint hardening: OpenAI-compatible image endpoints are normalized for /v1, /api/v1, full /images/generations, and trailing-slash base URLs.
  • Actionable image errors: image API HTTP failures now include the provider response body with secret redaction, making runtime failures diagnosable from checkpoints/logs.

Fixes and hardening

  • Fixed deterministic selfie/PAP intent detection with false-positive filters for unrelated words such as paper, paprika, papua, and papa.
  • Fixed selfie delivery flow so successful tool delivery suppresses redundant follow-up LLM text.
  • Fixed runtime busy checks so resume and approval intents are evaluated before rejecting a message as busy.
  • Fixed approval resolution so successful approval continuations complete the previous blocking checkpoint.
  • Fixed stale checkpoint handling with bounded stale detection based on task timestamps.
  • Fixed /new and /reset to report how many running runtime tasks were cleared.
  • Fixed Telegram callback/message slash command paths by awaiting SlashCommandDispatcher.try_handle().
  • Fixed Telegram bot command registration to include the current router command set.
  • Fixed OpenAI-compatible image payload selection so cx/* and codex/* models use OpenAI Images response_format: b64_json and size: 1024x1024, not SDXL-style width/height/step fields.
  • Fixed stale visual documentation and roadmap wording that still presented gpt-image-2 as the active proxy example.

Documentation

  • Updated visual identity configuration docs to show cx/gpt-5.5 with the local OpenAI-compatible proxy URL.
  • Updated roadmap wording to refer to current Codex image proxy models instead of stale gpt-image-2 proxy setup.
  • Updated the Clawra reference archive so historical provider notes do not read as current runtime guidance.
  • Added this release note and changelog entry for v0.1.19.

Verification

  • backend/agent/.venv/bin/python -m pytest -q backend/agent/tests/test_selfie_tool.py passed with 34 tests.
  • backend/agent/.venv/bin/python -m pytest -q backend/agent/tests passed with 468 tests.
  • backend/agent/.venv/bin/python -m ruff check backend/agent/g_agent backend/agent/tests --select F passed.
  • mkdocs build --strict passed.
  • Runtime config check showed visual.image_gen.model = cx/gpt-5.5 and visual.image_gen.api_base = http://localhost:20128/v1.

Runtime notes

A fresh runtime log confirms the fixed image path uses the configured physical description and cx/gpt-5.5 payload, then delivers the selfie and suppresses the follow-up LLM call. Reference-image vision extraction is not expected on every request when visual.physicalDescription is already cached in config.