DRAKIMACORE // ENGINEERING HANDBOOK

Rooms, Lead Moments and visual novels

Stable room content, authored stories, live chat and playback.

Reviewed 2026-11-07 ยท Public chapters

Ask Akari about this chapter
Source: docs/current/rooms-and-stories.md Download Markdown

A private room is an account-owned conversation combined with an authored scene. Runtime presentation selects approved identity, outfit, expression and placement records; it does not infer a default from the newest file on disk. Nineteen installed Gynoid identities share the room machinery while retaining their authored personalities and asset choices.

The Meet directory's nineteen presentation cards retain an opaque dark reading surface independently of their character-color gradient. Missing or invalid theme values cannot make the text panel transparent. MeetCardRenderingTests renders the compiled directory with synthetic characters; Tests/Browser/meet-cards.test.cjs checks its real styles on desktop/mobile with valid, absent and invalid palettes. This presentation rule does not edit Regular or Spicy character identities.

After an interrupted request, Resume reply checks for the saved answer and can retry an unfinished operation. It is not a read-only status check. Incomplete attempts are refunded; a completed retry uses the normal mode price. The protected draft and operation identity prevent duplicate settlement while the result is uncertain.

Desktop standard chat retains its existing configured and member-saved size, resize limits and inline toolbar. Reply text, speech availability and other content changes do not refit the panel. Only the existing mobile screen breakpoints (width at most 760px, or landscape at most 900px wide and 500px high) group Thinking, interactions, Lead Moments and Private Videos under More. The tray uses the same controls and handlers; Escape returns focus to More. Panel width does not select a layout, and switching back to desktop restores its toolbar. The eight-rem input default, separate desktop/mobile saved layouts, VN/mobile composer modes, recorded welcomes and first-visit website videos retain their own behavior. Presentation ownership is gynoid-room-chat-tools.js, gynoid-room-chat-tools.css and gynoid-room-chat-sizing.js.

Spicy Mode character cards

Every live chat widget offers ๐ŸŒถ๏ธ Spicy Mode, including Standard chat, VN chat and mobile voice/typing views. New chats start with it off. Turning it on selects that Gynoid's latest saved Spicy Mode card as the complete identity prompt; turning it off restores the regular card. The regular identity, built-in personality and interaction-role instructions are excluded while the alternate card is selected. Conversation history and the member's other explicit chat settings remain. Scripted Lead dialogue is authored content and does not change with this switch. The on/off confirmation dismisses automatically after five seconds. A newer room message replaces and cancels that timer. Standard chat starts with an eight-rem input area across Gynoid rooms; members can still resize it, and compact/mobile limits keep the composer within the available space.

Selection belongs to the account, Gynoid and chat in the current browser tab. It survives a reload within that tab and does not change another member's card or the globally active identity. Controls stay synchronized across widgets and lock while a reply is pending. Resume/retry retains the original operation's selection, including regular mode for older pending records. Missing alternate cards disable the button; server requests for a missing card fail before credit reservation.

Staff paste the complete alternate card in Character Card Studio. The existing identity revision store retains alternate cards under website-character-card.spicy.v1; the highest version is selected explicitly for private Site chat. IsActive continues to identify only the canonical regular card, so other consumers keep their existing identity. No new database schema or migration is required. Runtime ownership remains in GynoidIdentityCardService, GynoidRegistryContextService and GynoidConversationService; browser selection belongs to gynoid-room-spicy-mode.js, with mobile composer placement in gynoid-room-mobile-composer.js.

On October 23, 2026, the owner requested and saved distinct temporary cards for all 19 published Gynoids, limited to NES/SNES games from 1980โ€“1999. Private unpublished characters were excluded. All regular cards remained unchanged. Live LM Studio testing confirmed Akari redirected a Switch question to NES games with the mode on and resumed her Gynara leadership personality with it off. Desktop, keyboard, reload and mobile voice/typing checks cover the shared switch. These placeholders can be replaced independently through Studio without changing application code.

Stable room content

A conversation binds to its room release/hash, welcome and voice selection. Later publication does not silently replace that retained snapshot. Studio staff playtests have a separate audience and snapshot. Editors can work on assigned drafts and playtest; Admin approval/publication uses the exact reviewed snapshot without replacing newer draft work.

The room release contains the main room and selected Lead locations, including reachable choices. A chosen route cannot enter an unpublished location. Private drafts may be incomplete; a playable or published graph must satisfy media, ownership and routing checks. Missing retained content produces a recoverable failure instead of substituting unrelated scenery.

Authored stories and live chat

Gynoid anthology stories are free Lead Moments, including retained versions and recorded dialogue. The old forty-credit anthology admission rule is retired. Dedicated future VN productions keep their separate catalog. Hybrid AI is optional and explicit; a free scripted route remains available.

A Date with Akari's live Hybrid openings and replies use a 4,096-token output budget in both the original a-date-with-akari and current a-date-with-akari-definitive editions, allowing complete multi-sentence and multi-paragraph conversations. AkariDateResponsePolicy replaces the legacy short-turn ceiling for these editions, including releases captured with an older small runtime budget. Explicit Admin context caps still apply. Responses are validated against the existing 12,000-character VN transcript limit instead of the generic three-paragraph limit. Captured character cards, scene history, grading and progression remain unchanged; other stories retain their limits. An LM Studio output-limit stop triggers the existing single repair attempt even if the returned JSON looks complete. A second cutoff fails the turn instead of publishing or charging for partial dialogue. Malformed quoted JSON cannot fall back to comma-delimited bare text; an unfinished message is rejected and repaired rather than reduced to its opening phrase. The resizable reply pane retains complete text.

Dedicated games belong on Drakima Arcade (/DrakimaArcade). Character profiles reuse the same published card for matching non-combat visual novels, including A Date with Akari: configured cover artwork, retained release summary and free Play admission share the _VisualNovelAdventureCard partial. A matching card replaces the older profile composition rather than duplicating it. Their hero prioritizes Talk and Play before secondary media actions. A read-only /DrakimaArcade/games/{key} landing page keeps the selected published game through sign-in; only the existing Play POST admits a run. Staff-only private playtests retain their separate profile cards. Directory and profile published-story counts use the same verified, playable non-combat catalog cards; private previews and metadata without an available release do not inflate that count. Published Beta releases appear as Beta playtest, with free entry for signed-in, verified-adult members. A playtest label describes maturity; it does not bypass release integrity, account ownership or save protection. Staff profile previews use the live theme's audience flag for labels and distinguish private playtest counts from public releases, even when an older immutable release snapshot recorded a different audience. Public filtering stays live; the underlying release snapshot is not rewritten for a presentation change.

Lead discovery belongs to the account and character; a particular run belongs to an owned chat and room revision. Completion requires its terminal choice. Authored continuity supplements the selected chat rather than replacing earlier conversation history. Returning to the main room restores its actual scenery before the return control disappears.

VN Maker authorship

VN Maker owns Project, Scene, Story, Experience, Playtest and Publish. Create artwork in the independent Gynoid Creation Core, export approved PNG files, and use Project > Import Assets to bring chosen files into a novel. Creation Core projects and GPU work stay on the creator's PC. Import is an explicit upload; the website does not pull from ComfyUI or automatically ingest Creation Core ZIP bundles.

To use an imported expression in the private author playtest, add that character variant to the scene's layer set, give it the matching expression key, and align it with the neutral character layer. Set the story line's expression to that key. An asset in the library alone is not a placed scene layer. Scene and line preview flags do not publish the private novel; release remains a separate reviewed action.

Akari's Writing subject selector offers general assistance plus Story, Dialogue, Choices, Cast and Lore, Scene Composition, Artwork and Imports, Audio, and Playtest/Release. The bounded, server-owned references in VisualNovelAuthoringTopics accompany the existing authorized project context. Subject keys and the catalog revision are validated and bound to the operation fingerprint. Unknown or stale selections fail before generation. A topic changes advice, not context scope, research consent, project membership, or write authority. Text proposals still require explicit human review/application. Configurable Akari prompts retain the current workflow and selected subject as a mandatory appended contract.

Website artwork generation and retry are retired. Runtime composition registers RetiredVisualNovelArtJobService and no artwork worker or processor. Legacy database records, receipts, candidates, cleanup, review, export and placement remain usable; generation forms and provider-health controls are removed from VN Maker. Existing queued records are retained and can be cancelled, but are not resumed by a website host. Legacy provider/processor code remains only for compatibility and regression coverage, not as an available authoring workflow.

Gynoid identity, outfits, rooms and reactions remain organized by the Gynoid Wizard. VN Maker uses those resources to author a separate novel without changing or publishing its source Gynoid.

Presentation and audio

Combat game entry artwork may be set through GameCatalog:TitleScreens:{themeKey}:Url. Valkyrie's call sign screen uses the owner-selected Dome ensemble artwork also shown on its Arcade card. The complete image fits inside the 16:9 stage without cropping its title or Maidens. Unconfigured games use their published title asset; candidate author previews always show their authored asset. This website presentation setting does not rewrite release media, story scenes or saved runs.

The A Date with Akari player adapts the rooms' glass dialogue pane. Its desktop 16:9 stage sizes to the space below the website navigation and story heading, while native fullscreen retains its own viewport fit. Standing scenes use a wide bottom pane (70% width, capped at 1200px; 26% height, bounded to 240โ€“270px on desktop). Dinner starts on the left at 6% left and 20% top, with 34% width bounded to 400โ€“620px and 30% height bounded to 260โ€“320px. All presets are clamped inside the actual stage. Visit-local adjustments remain separate for each scene and return when revisited. Its lighter glass reduces the previous background opacity by 40% (80% becomes 48%; a fresh default is 49%) and uses a soft 4px blur while leaving text opaque. Textbox Opacity supports 25โ€“95% and remembers later adjustments separately from other VNs. Desktop choices appear at center right. If that position would overlap the movable dialogue pane on a short stage, they fit into a free vertical band above or below it, with a bounded scrollbar for longer lists. The pane keeps the reader's chosen geometry; choice placement is recalculated rather than saved. Compact 16โ€“18px choices use the Balcony's rounded rose and amethyst styling, with no redundant response heading. Phone widths up to 700px, and short landscape windows up to 900px wide by 500px high, use a separate reading flow: bounded 16:9 artwork, then the complete dialogue and response list. Short landscape caps only the artwork strip; the reading surface keeps the available width. Choices use page scrolling instead of overlapping the dialogue or hiding in a small nested scroll area. Name entry, optional-AI invitations and completion also use this flow. Phone pane movement and resizing are suspended, preserving each desktop scene's visit-local geometry for the return to desktop. Character and furniture movement use the artwork viewport rather than the height of the reading page; normalized preferences and authored assets are unchanged. Drag its heading row to move the pane or its labeled lower-right Resize grip to resize it. Arrow keys work on either focused handle; Shift increases the step and Home resets size and position. The game menu handles scene controls and history. Settings contains Reset dialogue view, Hide dialogue and Show dialogue. Geometry remains inside the stage after resizing or rotation. These visit-local presentation controls do not advance the story, spend credits, modify saves or change a release. Legacy VNs and combat retain their own controls. The dedicated Web owners are visual-novel/memory-dialogue.js and visual-novel/memory-dialogue.css. The pane shows a scene/location label instead of treating a branching script-line index as progress. Its visible Next button and Enter hint reveal the current text or advance through the normal story path; choices retain their own controls. The button is unavailable beneath game menus, entry/completion overlays, the explicit AI/free-story decision and live conversation. Raw line positions remain available in save/history metadata. The ending keeps its artwork and actions inside the stage, reports story completion separately from the reached authored ending, and offers Replay Story or a return to the character. Its covered Menu button is hidden and focusing the ending title does not scroll the page. Covered stage controls are inert while the ending is visible; Replay restores them without restricting page navigation.

Standing scenes center Akari at a closer 150% default with a -6% vertical offset from the opening scene's camera height. The walk, overlook and ending normalize their authored top to the opening's 128/1080 anchor so the same standing artwork keeps its visible size and headroom after dinner. The reviewed dinner presentation places her slightly right at 95% size. The version-3 posture preferences restore standing framing independently of dinner adjustments. A live reply's unprefixed emotion cannot change posture. Drag Akari to reposition her during scripted scenes or live AI replies. The menu's Settings contains the size slider (60โ€“180%) and Reset Akari. Focus her for arrow-key movement (Shift moves farther), +/โˆ’ resizing, Space to hold the Lift reaction, and Home to reset position and size. Local preferences are shared by posture, so a seated emotion change retains the reader's framing. The optional CutIn / interaction-lift (seated) and interaction-lift-standing assets, owned by Akari, are captured in the immutable release; the temporary Lift restores the latest authored or AI expression after release or cancellation. These controls spend no credits, alter no story state and play no retired emote audio. Their owner is Public Web's visual-novel/character-controls.js; the shared player delegates sprite updates to it. Click Next, the dialogue pane's text or its empty space to reveal or advance; background, character and furniture clicks never advance this Akari story. Focus the text and press Enter to continue. Enter also works on the speaker heading; typing, widget buttons, choices and live AI retain their own input rules. Held keys never skip multiple lines.

The dinner table and seat have independent controls under Menu > Settings > Scene composition. Choose Furniture, enable Move selected furniture, close Menu and drag the selected object. Arrow keys move it, Shift increases the step, +/โˆ’ resizes proportionally, and Home resets that object. The menu also offers size (25โ€“200%), horizontal/vertical offsets, and selected/all-furniture resets. Only the selected furniture receives pointer input during adjustment; its authored depth remains intact. Preferences survive dialogue/emotion changes, reloads and viewport resizing, scoped to the exact release, scene and layer. A new release starts from its reviewed or authored defaults so adopting a composition cannot apply old offsets twice. The reviewed retained dinner art starts with a 75% banquette at source (315, 42) and an 80% table at (300, 370). This presentation overlay applies only to the matching original geometry; new authored geometry keeps its own framing. Its versioned preference scope starts from these defaults once, retains subsequent adjustments, and Reset restores them. Copy composition and Download composition export source-canvas geometry with the theme, scene, layer and release identity for a later authoring update. They do not publish defaults, alter story saves or spend credits. The dedicated owners are visual-novel/scene-prop-controls.js and visual-novel/akari-scene-framing.js; published content snapshots remain immutable.

The current Akari edition uses complete prerecorded dialogue in place of its short emote cues. Its narration is also prerecorded with Akari's approved cloned voice while retaining the Narrator label. Scripted voice playback remains free. Hybrid replies use the existing captured cast voice and paid speech service: Generate speech costs 1 credit for a complete successful response, including all packets; replay is free. The response header's voice icon generates or replays the current reply and becomes Stop during playback. Speech is requested explicitly; the automatic-speech checkbox is removed. The chat composer displays the live wallet balance. Akari's desktop live chat uses translucent glass, a draggable heading and a corner resize handle, with arrow keys, Shift and Home matching the scripted pane controls. The live reply and speaker name use the lavender dialogue color (#e3bfff). The reply has no colored left rule or inner fill; its transparent speaker heading scrolls with the reply to avoid covering text. Desktop defaults reserve the available stage height for the header, reply, composer and action row; the reply scrolls within its own area. Member-sized smaller panels retain an outer-scroll fallback. Continue story and Send share a compact action row, with Send on the right. Minimize, side switching, transcripts and explicit speech controls remain available. On phones, the full-width live panel follows the artwork; its reply, composer and actions use page scrolling, with 44px tap controls. Pane dragging, resizing and side switching pause until desktop returns. Menus fit the keyboard-visible viewport; keyboard height changes do not become a saved layout. Native fullscreen retains a scrollable reader. Returning to the free story locks the composer and both actions until the checkpoint settles; rapid clicks share one return, and a failed return keeps the draft and enables a safe retry. The shared visual-novel/hybrid-return.js owns that transition and ignores stale completions. The exchange counter identifies conversation exchanges. Once a reply has arrived, Reply received. Revealing textโ€ฆ distinguishes its display animation from provider waiting; Show full reply in the response heading completes that animation immediately. Instant text speed displays the complete reply without animation. Revealing available text makes no new AI or speech request. The shared visual-novel/reply-reveal.js owns animation completion and stale-timer isolation. visual-novel/floating-panel.js owns bounded desktop scene-local geometry for both panels; visual-novel/memory-viewport.js owns the phone policy and bounded artwork coordinate surface. Phone/device keyboard acceptance remains separate from source and emulated-viewport checks. Failed speech generation does not consume a credit. Character reference updates require a deliberate VN voice capture and a new immutable release.

This edition uses the owner's A Date with Akari Theme Music as one continuous theme-level loop across all five scenes at 30% authored gain. The 191.12-second WAV master remains external; VN Maker captures its web MP3 derivative in each new immutable release. The music receipt is Content/VisualNovels/a-date-with-akari-music-v1.json. Earlier music cues remain unpublished drafts; there are no scene-specific music overrides. Only the dinner scene retains ambience (12% gain). The novel mixer adapts the rooms' speech suppression: actual recorded or generated voice playback lowers music and dinner ambience to 65% of their current level, with a 120 ms attack and 450 ms recovery. Overlapping voices, stops, errors, mute, sliders and scene fades share that gain owner; a late fade cannot undo a player's mute or volume preference.

All 19 Gynoids use Akari's approved indoor visible-art framing: desktop artwork starts 6% below the stage top and spans 128% of its height; narrow layouts use 10% headroom and 82% height. Main rooms keep the character at 26.5% stage width, while indoor Lead scenes center her. Expanded desktop chat starts at 48% left, 26% top, 40.5% width and 62.5% height. Indoor VN panels start centered near the bottom, at 62.5% width and 21% height (bounded for small stages). Standing and seated poses, wardrobes, Poke and automatic Lift fits retain their scene's visible height and center. Authored Studio placements and the reviewed seated Lift body correction remain supported.

New chats always choose front-family artwork, even when a previous conversation used Side or Rear. In private chat, a member's standalone Cakie mention also requests Rear, using the same local facing policy as turn around. It overrides a conflicting model angle and survives completed-reply retries. Quoted examples, negations and the personal aliases MimiCakie / Cakie-chan do not trigger the cue; explicit facing commands retain their usual precedence. The existing outfit and posture rules select available rear artwork, or the supported seated fallback. Akari's full-back artwork is reserved for an explicit rear request in the current message (including Cakie) or a manual Rear angle selection. Her over-the-shoulder rear poses remain available for both ordinary conversation and rear requests in every installed outfit. A model-selected angle, saved Rear preference or earlier request cannot enable full-back artwork on subsequent ordinary replies. Completed retries derive this permission from the stored member message; legacy expression rendering also substitutes an over-the-shoulder pose for rear-neutral. Facing preferences belong to each conversation; resuming history retains that conversation's selection. The version-2 layout scopes apply the new sprite/chat and VN defaults once; later member adjustments remain saved. Reset uses the canonical outfit anchor, including when the visible outfit uses a different canvas shape. Later passages in the same location/posture retain member framing. Returning from a Lead restores the main-room frame and facing preference.

Balconies use a separate standing composition: 100% sprite size, 54% vertical position, at 34% or 66% horizontal position according to the reviewed railing/background. Akari stands on the right. The desktop Standard chat starts on the opposite side at 40.5% width and 62.5% height, with separate saved preferences for each balcony side. Returning indoors restores the main chat geometry. Phones center the character and place Standard chat below it; members can still choose VN mode and move or resize either widget. Balcony entry selects the active outfit's reviewed rear standing entry marked balconyOpening: true. Managed packs without that optional flag prefer lead-the-way, then invite-follow, then rear standing conversation artwork. All 31 installed outfits have a reviewed invitation and at least five distinct rear conversation images. No separate props or seats render there. This presentation overlay also corrects retained seated balcony releases without rewriting story text, recordings or images. Existing narrative references to chairs and furniture painted into backgrounds are not altered. Named balconies and the reviewed observatory/overlook artwork are recognized without classifying a room from its story prose; unknown balcony artwork uses its authored left/right placement.

The nineteen published characters have reviewed romantic and philosophical balcony invitations in Content/Gynoids/balcony-conversations-v2/, owned by GynoidBalconyConversationCatalog. Each has a voiced invitation, three first responses, a second choice point and two concluding responses (133 ChatterBox recordings across the cast). The member can type a live response at any point. Recorded prose avoids member-name placeholders so spoken and displayed words agree. In VN Maker, Preview restored balcony adds these nodes to the current release, preserving the private draft and every existing story. Review the playtest, then use the usual Admin publication action. An explicit story catalog receives a separate free invitation entry. If original sprites were moved into outfit folders, the preview resolves calibration references only to a unique existing original sprite for that character; unresolved or ambiguous paths still prevent publication. Retained releases and unfinished drafts are never rewritten by this repair. The original v1 catalog identifies unchanged installed invitations: only exact legacy text/choice matches receive the voiced continuation upgrade. An edited invitation is left intact; reviewed publication creates another immutable release. Readiness accepts either a saved complete character card or the structured identity fields. Standing artwork can come from active sprite packs or the installed performance manifest, but must still be an owned, existing PNG that passes inspection. A seated pose cannot satisfy standing readiness. The dedicated Balcony room button opens the invitation in Standard chat with optional conversation starters and a free-text composer. It passes the chosen moment into live chat and suppresses idle story interruptions while outside. Choices lead to recorded responses, then an explicit Continue control opens the second choice point. Ordinary live-chat speech remains a separate member action or opt-in. Standard balcony choices have a separate dialogue gap, rounded rose-and-amethyst buttons, wrapping labels and visible keyboard focus. Their styling is scoped to balcony topics in gynoid-room-lead.css. Anthology moments remain separately available. Generate with Render-DrakimaRoomVisits.py --kind balconies and verify with Test-DrakimaLeadVoiceWaves.mjs --balconies before staging publication. Existing chats keep their pinned content; open a new chat after publishing. Aster's private authored balcony is retained separately, and Lyra's unfinished draft is outside this installed restoration.

Seats use the same stage-height scale as their characters, preserving authored 16:9 proportions on phones, windowed and wide displays. Automatic fitting targets 35โ€“110% of the seated figure's visible height, within the existing prop size limits, before aligning its authored contact point. Shallow benches and sitting walls can remain below that target at the maximum width. Transparent padding does not determine the apparent size. Seat preferences have a refreshed storage scope; new manual size/position adjustments remain available. Lift/Poke never move or resize the furniture.

Framing ownership: gynoid-room-scene-defaults.js owns facing, balcony classification and side presets; gynoid-room-balcony-chat.js owns Standard balcony topics and layout preferences; gynoid-room-lead-chat-controls.js mirrors the shared reply into the optional VN composer; gynoid-room-choice-dock.js owns VN geometry/preferences; gynoid-room-sprite-framing.js owns the indoor camera target; gynoid-room-performance.js owns pose/reaction fitting, and gynoid-room-seat-framing.js plus gynoid-room-props.js own furniture proportions. Retained room releases and earlier image files are unchanged. Versioned replacements and review evidence are recorded in Content/PublicAssets/balcony-sprites-20260928.json.

Standard and VN chat show the same completed reply and share live speech state. New chat and history switches preserve the room shell/music owner while replacing release-owned content. Late artwork, speech or fetch events from an old chat cannot affect the new one. A restored disposed browser page reloads its owned conversation rather than reusing abandoned listeners.

The room's first-use guide starts with one short invitation; controls and memory guidance expand on demand. The desktop windowed stage fits below its actual page position with a 16px bottom margin; fullscreen keeps its own fit. History search filters the loaded conversation names and dates without opening transcripts or calling AI. Renaming a focused result out of the active filter returns focus to search. Pins stay first; recent chats use activity-date groups, while unused drafts have their own group. Owner names stay intact and unnamed chats use readable creation dates. Crossing the narrow/desktop boundary saves the old chat layout before restoring the destination's per-view preference, while preserving the visible character and unsent draft. Resizing back restores later member adjustments and the character's keyboard focus attributes. Long chat prose has a bounded reading width. Compact rooms cover widths through 760px and short landscape viewports through 900 ร— 500px. Their voice-first VN composer exposes visible Type and Voice controls with 44px actions, sharing the existing draft and send owner. A lifecycle-owned visual-viewport fit keeps the room and its overlays above a phone keyboard; this temporary fit is not saved as member geometry and does not take over native pinch zoom. Standard chat uses adjacent response and composer columns in short landscape. Real phone keyboard/device acceptance remains separate from the viewport-owner regression harness and desktop browser emulation.

The room Menu's expandable Voice submenu groups Voice on/off, Auto speech and a Voice volume slider with a percentage display, independent of Music volume. It opens like the Music submenu. It defaults to 100% and remembers the member's setting on this device across rooms and visits, including 0% for silent playback. Adjustments apply immediately to the current voice and subsequent speech packets, welcome/farewell recordings, Moments, balcony dialogue and voiced reactions in Standard and VN chat. The existing Voice and Auto speech switches still control playback and generation; changing volume does not request speech, change credit charging, or change music, video, text-blip or interaction-effect levels. Storage restrictions leave the slider usable for the current visit. The owner is gynoid-room-voice-volume.js, composed into the room's common playback path and farewell player.

Prerecorded welcome/farewell, Poke, Lift and emoji reactions use the character's authored text, voice and recording manifest. Exit lets a farewell finish before fading and navigating. Normal visits do not generate a new greeting through TTS. Paid generated speech remains independent of room sounds.

Character-card saves preserve the complete website-authored identity. Raw v2 cards supersede the older relationship overlay. Startup repair must not overwrite an explicitly saved website card.

Implementation evidence: src/DrakimaCore.GynoidConversations.Application, src/DrakimaCore.GynoidConversations.Web, Services/Gynoids, Services/VisualNovel, Content/Gynoids, and Studio's Gynoids/VisualNovelMaker controllers.