2026-05-31 — PRD-16 Image Recognition / Alt Text
Implemented the planned v1 shape for image descriptions. The relay now expands BlueBubbles attachments into stable pseudo-messages, returns generic placeholders for non-image attachments, and uses a local cache plus background MiniMax jobs for image descriptions. The RG client renders image-description bubbles distinctly and can hide/show them from the Start menu.
Runtime contract: - Relay host config:
~/.config/aquaping/config.json - Required MiniMax keys:
minimax_api_key and
image_descriptions_consent: true - Optional limit:
image_descriptions_daily_limit, default 100 -
Relay cache: ~/.cache/aquaping/image_descriptions.json -
MiniMax runtime: official mmx vision describe CLI on the
Mac relay host
No raw MiniMax keys belong in Forgejo, Pearl Brain, or the FROM House feed. Shared surfaces should document only the key names, paths, and operational procedure.
Deployment record: - Implementation commit prepared locally as
04f14f0. - Local validation passed:
python3 -m unittest discover,
python3 -m py_compile client.py relay/server.py tests/test_live_updates.py tests/test_relay_images.py,
and git diff --check. - Mac relay host has
mmx 1.0.15 installed. Non-secret relay config now has
image_descriptions_consent: true and
image_descriptions_daily_limit: 100. - MiniMax activation
is still blocked until ~/.config/aquaping/config.json
receives minimax_api_key; mmx quota currently
reports no credentials. - Forgejo push and Pi4 workspace deployment are
blocked because 100.120.38.37:3001 and
100.120.38.37:2223 are down and /mnt/kitchen
is mounted emergency_ro,shutdown with ext4 I/O errors. -
RG40XXV deployment is blocked: aqua.tail347b6c.ts.net and
100.118.36.108 timed out over SSH, and the LAN fallback had
no route.