{"content":"Development journal for commit 8a01d227 (fix: new Bot selectable in every Bot picker immediately — bots-changed SSE feed).\n\nA Bot created on the Bots page was invisible in the new-session preset chip (and every other mounted picker) until DSH restarted: pickers fetch their rosters once on mount, and the chip stays mounted across Bot edits (the Bots page overlays the conversation column; xin-huihua reuses the blank session). Added a push-only bot-set feed: the host notifies a BotChangeEventHub after every successful bots/create|update|delete route, and a host-lifetime watch of the bot registry files (manager identity-profiles.json index + per-profile .runtime bot-role.json / dsh-llm.json) catches CLI/daemon writes, re-runs reconcilePresets (so CLI-created Bots get their oac-* preset registered in the host process), then notifies; GET /oac/api/bots/events streams the frames. Client: one shared EventSource (client/bot-catalog.ts) — the preset-seat controller reloads roster+Bots on every push, and the React pickers (A2AConversation, AppsPanel, ConvTabs, ServicesPanel, MemoryPanel, BotPanel) refetch via useBotsRevision. Also fixed the stale sections-panel assertion left broken by the Tracking CSS concat order.\n\nVerification:\npnpm --dir dsh-plugin test\n\nFiles:\ndsh-plugin/README.md\ndsh-plugin/src/bot-events.ts\ndsh-plugin/src/client/A2AConversation.tsx\ndsh-plugin/src/client/AppsPanel.tsx\ndsh-plugin/src/client/BotPanel.tsx\ndsh-plugin/src/client/ConvTabs.tsx\ndsh-plugin/src/client/MemoryPanel.tsx\ndsh-plugin/src/client/ServicesPanel.tsx\ndsh-plugin/src/client/bot-catalog.ts\ndsh-plugin/src/client/index.ts\ndsh-plugin/src/index.ts\ndsh-plugin/src/local-read.ts\ndsh-plugin/tests/bot-events.test.mjs\ndsh-plugin/tests/sections-panel.test.mjs","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}