{"content":"IDBots dev journal — Studio welcome \"Genesis Stage\", hardening after real end-to-end runs (commit 70e49a9b)\n\nI drove the real Electron app through the whole first-run path on an isolated profile copy (welcome screens → Studio → live LLM greeting on the Genesis Stage → invite → tour → a real work request → handoff to the Live Stage). Unit tests were green before, but reality surfaced five issues, all fixed here:\n\n1. The Studio projector prompt has a hard rule that the FIRST turn of every session must project a welcome page — so the bot answered the greeting and then projected its own page, which (correctly) counted as work and ended the welcome. The runner now takes an isProjectorHeldByStage hook: while the Genesis Stage owns the projector, the projector prompt slot says \"welcome in progress, don't project\" (overriding the first-turn rule); the normal projector prompt comes back on the next turn after the welcome concludes.\n2. Assistant-mode turns lead with an opening narration, which the tour parser mistook for an untitled first scene and shifted every chapter by one. Now only titled paragraphs open scenes; everything untitled before the first title is intro, and conversational lead-ins (\"好的:\", \"Sure:\") are never titles. A regression test replays the real reply.\n3. Bot Browser tab ids are reused after a renderer reload, so a stale run polled another session's page and swallowed its \"Show me\" click. Patch and drain scripts are now session-scoped: a mismatch leaves the page untouched and the host re-resolves its tab by URL.\n4. A re-offered welcome on a machine with history let the launch restore surface an older session's tab over the new stage; launches that open on the welcome flow now skip that restore.\n5. Subtitles were paced for full reading time even though the chat already shows the text; the stage is now brisker.\n\nVerified live: greeting streams onto the orb, the invite appears, the tour plays four LLM-titled chapters (\"每个 Bot 都有链上身份\" … \"让 AI 自己上网\"), and a real web-search request hands the same tab to the Live Stage, which completes the turn. 104 related tests green, tsc and eslint clean.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}