Fix: separate filename timestamp (20260819_080847) from record timestamp (2026-08-19 08:08:47) to prevent ArrowInvalid when dataset viewer parses timestamp field. Also fix proxy template to use same pattern.
Fix: extract photo_url from logs, debug info shows actual image URL, check save results, add time field, use photo field from Zalo API + OCR with Vintern-1B for Vietnamese text extraction
Fix: use photo field from Zalo API, add Vietnamese OCR with Vintern-1B, include photo_url in logs, check save result before logging success, add time field to all log entries, OCR text parsing for product_name/description/price/category
Emergency fix: ZGR logs page now displays ALL webhook events including sender_id, text, image_url, and metadata. Previous version had no logs because sender_id filter was too strict.
Fix SyntaxError: replace nested f-string with string concatenation to avoid escape character issues. Use f-string with weight variable instead of inline expression with quotes.
fix: escape log variable in proxy template f-string ({{log['event']}} not {log['event']}) — prevents KeyError during template evaluation; fixes 'name log is not defined' error when creating proxy spaces
feat: persist proxy spaces to Space repo file (proxy_spaces.json) so list survives rebuilds; add _load_proxy_spaces on startup + _save_proxy_spaces after creation
fix: correct audioop stub syntax; add GET /webhooks to proxy, /logs page in proxy, auto-reply welcome msg, auto setWebhook with user token, /proxy-spaces management page + Gradio tab