From 3152b01c04cf4101fccb7c1c08bd98db403a8f1b Mon Sep 17 00:00:00 2001 From: jelisaveta-talbot <268838642+jelisaveta-talbot@users.noreply.github.com> Date: Wed, 6 May 2026 19:00:40 +0200 Subject: [PATCH] buyer: indexer-driven /tasks page, path-B TTS demo, server-side error logging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three buyer-app changes that all landed during the same browser-debug session and were verified end-to-end on Vector testnet: UX-3-history — /tasks page is now indexer-driven (M1-F-5 followup) - TaskHistory.tsx fetches /v1/indexer/escrows?buyer= from the buyer-app proxy, groups rows by (posted_at, supplier_pkh) into lifecycle cards, and renders newest-first with state pill, capability/model/price, and the tx-hash chain - main.tsx drops the LocalStorageTaskHistoryStore (chain is the source of truth; SDK uses MemoryTaskHistoryStore for in-flight only) Path-B PiperTTS demo — capability-routed UI without escrow yet - buyer/src/server.ts: POST /v1/synth-speech proxies to the openedai- speech-min host; validates {text, voice, format, speed} and returns audio bytes with the upstream Content-Type - buyer/src/config.ts: TTS_PIPER_BASE_URL env (optional; absence keeps /v1/synth-speech disabled with a clean 503) - buyer/src/ui/components/PiperTTSForm.tsx: capability-specific form (text + voice + format + speed slider) with inline