{"content":"Development journal for commit bf640424 (fix(dsh-plugin): dream LLM idle timeout, contact names in Contacts tab, transcript default limit).\n\nDream runs used to hang forever when the provider stalled mid-stream: generateLlmText had no timeout, so the run sat in 'running' until the 30-minute stale sweeper killed it with 'stale running run reset'. generateLlmText now races each chunk against a per-chunk idle budget (5 minutes for dream calls) and aborts the iterator, so the attempt fails fast with the real error and the retry/backoff path works as designed. Also fixed a transcript store bug where readTranscript silently defaulted to returning only the last turn of each session, starving dream activity gathering of almost all context. Contacts tab now resolves subject display names (local Bot profile name, then A2A peer name; IDBots parity) and shows the GlobalMetaID as a muted abbreviated line under the name, and the Add-memory button no longer wraps its label.\n\nVerification:\n/Users/tusm/.nvm/versions/node/v20.20.0/bin/node --test --test-concurrency=1 tests/memory/transcriptStore.test.mjs tests/memory/contactNames.test.mjs tests/memory/dreamStore.test.mjs tests/memory/dreamService.test.mjs tests/memory/impressionStore.test.mjs && cd dsh-plugin && npm test\n\nFiles:\ndsh-plugin/src/client/MemoryPanel.tsx\ndsh-plugin/src/client/api.ts\ndsh-plugin/src/client/styles.ts\ndsh-plugin/src/llm-generate.ts\ndsh-plugin/src/local-read.ts\ndsh-plugin/src/memory-routes.ts\ndsh-plugin/tests/llm-generate.test.mjs\nsrc/cli/runtime.ts\nsrc/core/memory/contactNames.ts\nsrc/core/memory/transcriptStore.ts\ntests/memory/contactNames.test.mjs\ntests/memory/transcriptStore.test.mjs","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}