Feature migration status
Audit: 2026-10-23. Public Staging for guide and guest testing; full historical parity remains incomplete.
“Server-tested” means automated checks of the compiled application service. It does not mean a hosted user journey or a physical device has passed. Existing production tools remain available while migration is incomplete.
Immersia Prod ↗ · Marketing preview ↗
| Area / feature | State | Evidence and limitation |
|---|---|---|
| Core applicationTour create/read/update and owner isolation | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationConcurrent editing revision conflicts | server-tested | Worker/D1 integration; lib/store.tsServer logic verified; hosted signed-in and browser journeys remain unverified. |
| Core applicationSaved Editor tour → Host without JSON handoff | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationPrivate guide notes excluded from Guest payload | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationPrivate uploaded media authorization and ranges | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationSession play/pause, seek, blackout and end | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationInvitation validation and revocation | hosted-tested | Custom-domain guide/anonymous guest journey and two real Staging accounts; Worker integrationOnline core journey verified. Does not certify every physical device or historical capability. |
| Core applicationStaging/production data separation | server-tested | Two independent Worker/D1 instances; distinct Site bindingsServer logic verified; hosted signed-in and browser journeys remain unverified. |
| Core applicationFrozen running-tour snapshot | server-tested | Worker/D1 integration: edit tour after launchServer logic verified; hosted signed-in and browser journeys remain unverified. |
| Core applicationMCP private tour reads/writes | server-tested | Compiled Worker authenticated JSON-RPC testsServer logic verified; hosted signed-in and browser journeys remain unverified. |
| Editor and live tourItinerary stop CRUD and reordering | partial | components/Studio.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourMap markers and stop coordinates | partial | components/TourMap.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourMeeting point, accessibility and audience fields | partial | components/Studio.tsx; lib/model.tsCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourStanding instructions, visual targets, beats and transitions | partial | components/Studio.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourSource references, rights notes and field-verification flag | partial | lib/model.ts; components/MediaEditor.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourStudio JSON import/export and legacy manifest mapping | partial | scripts/check-core.mjs; lib/import-tour.tsCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourGuide rehearsal mode | partial | components/Guide.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourImage, video and audio media cues | partial | components/live/Player.tsxCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourPlayback in/out boundaries | partial | lib/runtime.ts; /api/session cue regression testsCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourSession history and resume | partial | /sessions; /api/session?history=1Code present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourKeyboard/USB clicker controls | partial | lib/runtime.ts hostKeyCommand tests; Host key listenerCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourGuest reconnect and device resume | partial | components/live/LiveApp.tsx; /accessCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourQR invitation generation | partial | qrcode library; /guest capability URLCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourFullscreen and wake lock | partial | Feature-gated browser calls in LiveAppCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourPWA install metadata and icons | partial | public/manifest.webmanifest; /accessCode present. Browser/device behavior has not been verified in this environment. |
| Editor and live tourBounded download and offline guest media cache | partial | public/sw.js cache expiry/range tests; LiveApp downloadCode present. Browser/device behavior has not been verified in this environment. |
| Media editingBinary clip rendering, private source vault, thumbnails and waveform editor | not-migrated | Historical app/src/pages/editor/PrivateClipEditor.tsxNew Editor has playback cue bounds only; it does not render a trimmed media file. |
| OfflineStarting or controlling a live group without a network | not-migrated | Historical docs/internals/pwa-offline.md; new Host refuses disconnected writesLocal downloaded guide presentation exists. Offline live-group control is not implemented here and is not established as a working historical baseline. |
| DevicesNFC ring | not-migrated | Historical app/src/lib/device-parity.tsNative pilot remains tracked in #3331. No claim of device success or store update. |
| DevicesBLE ring | not-migrated | Historical app/src/components/RingControllerBar.tsxNative pilot remains tracked in #3331. No claim of device success or store update. |
| DevicesGamepad input | partial | Standard browser gamepad mapping in guide controller; rising-edge logic tests passed.D-pad previous/next, A play/pause, B blackout. Physical controller and native-device checks remain. |
| DevicesIndependent Android external display / phone-only Pocket Mode | hardware-pending | Origin-scoped web adapter, renderer acknowledgements and heartbeat expiry; native-display testsStaging Android pilot uses the generated origin. Asset Links statement supplied for the verified staging certificate; native phone/glasses acceptance remains required. |
| DevicesiOS native wrapper and mirrored display integration | hardware-pending | Historical ios/Sources/WebViewController.swiftSeparate historical native build/distribution remains in service. Website publication does not update installed binaries or prove device playback. |
| DevicesAndroid app store delivery | hardware-pending | Historical android/ and release pipelineSeparate historical native build/distribution remains in service. Website publication does not update installed binaries or prove device playback. |
| DevicesWebXR textured media plane | hardware-pending | lib/webxr.tsReal session/render code exists; no headset test, world anchoring or geo-aligned AR validation. |
| DevicesMeta Ray-Ban Display | hardware-pending | Compact 600px display layout and D-pad handlerLayout only. No verified Meta transport, device session, simulator acceptance or publication. |
| DevicesXREAL browser screen mirroring | hardware-pending | Fullscreen guest view; existing app #3105Needs compatible video output and a physical phone/glasses bench. |
| Live audioLive guide voice streaming | partial | WebRTC client and per-listener signaling; owner/invitation/cookie/revocation testsExperimental and off by default. Actual listening on two devices remains unverified; a TURN relay is not configured, so restricted networks may fail. |
| Live audioLive subtitles | implemented | Explicit guide captions and translated captions broadcast through the session; timed media subtitles are available.Automatic continuous speech captions are not implemented. Voice messages can be transcribed and reviewed before sending. |
| Live audioSimultaneous audio translation | not-migrated | Historical audio-translation-flag.ts; opt-in translate flagRecorded voice messages, text translation and device speech are implemented; continuous voice streaming and simultaneous audio translation remain unmigrated. |
| Account and commercialPlans, subscriptions, checkout and billing portal | not-migrated | Historical AccountPage.tsx and plan-limits.jsonBlocked on a Staging Stripe test credential. The available Doppler key is live-mode; it is not used. Stripe connector requires reauthentication. |
| Account and commercialPlan-based storage/guest/media entitlements | not-migrated | Historical config/data/plan-limits.jsonThe private Sites pilot must not replace these historical production functions yet. |
| Account and commercialGuide teams and account administration | not-migrated | Historical account/profile and plan guide-account limitsGuide account creation and sign-in are implemented. Multi-guide team administration is not ported; historical maxGuideAccounts limits alone do not prove a working team-invite flow. |
| Account and commercialLead capture, guest CRM and CSV exports | partial | Optional consent form, owner-only participant list and CSV; compiled service testsHosted form/CSV validation pending this release. No external CRM writes. Lists are available for 30 days; expired rows are removed on subsequent submissions. |
| Account and commercialOAuth consent and revocable external agent connections | not-migrated | Historical oauth/consent and OAuthConnectionsPage.tsxThe private Sites pilot must not replace these historical production functions yet. |
| Account and commercialFrench and Chinese application UI | not-migrated | Historical i18n locales en/fr/zhThe private Sites pilot must not replace these historical production functions yet. |
| Announced integrationsBokun product synchronization | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsNo official product-write authorization or reconciliation adapter configured. |
| Announced integrationsDirect availability/reservation/Stripe checkout in Immersia | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsNo booking transaction service in the new application. |
| Announced integrationsAutomatic OTA distribution | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsNo connected channel write/sync flow in the new application. |
| Announced integrationsAutonomous tour generation | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsPrivate MCP tools allow reading/saving a tour; no end-to-end generator is implemented. |
| Announced integrationsOfficial ChatGPT/Claude/Gemini marketplace publication | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsCurrent private ChatGPT Site MCP does not establish portable OAuth, third-party compatibility or official directory acceptance. |
| Announced integrationsLicensed premium catalogue and visitor-fit recommendations | external-pending | Conversation roadmap; Studio Distribution panel; private MCP toolsStrategic direction; no operational marketplace or empirically validated recommendation service. |
| Immersia MarketingNew Editor/Host/Guest navigation | server-tested | Marketing link audit; unified app routesPrivate access still applies. |
| Editor and live tourEmbedded MCP tour editor | partial | Official MCP Apps SDK; authenticated UI resource; list/get/save tools share tour revisions. Compiled service integration tests passed.Private Staging connection only. ChatGPT rendering and other client OAuth acceptance remain to validate. |
| Migration updateGPS standing point and camera direction | implemented | High-accuracy browser location, uncertainty, manual map points, bearing and walking directionsField accuracy and physical compass need on-street validation. No AR camera reconstruction. |
| Migration updateTimed subtitles and translation | implemented | SRT/VTT import, editable tracks, transcription and translation, guest language choiceAI output requires review. Device voice availability varies. |
| Migration updateGuide voice messages and captions | implemented | Microphone recording, caption broadcast, guest playback and device speechContinuous microphone streaming is not migrated. |
| Migration updateExisting Cloudflare staging data | hosted-tested | Verified legacy account UID, per-owner D1/R2 bridge; real historical tour opened and served to an invited guestSource tours stay read only. New drafts preserve slide order and guide provenance. Reopen existing drafts to fill missing blank notes; source vault and rendering remain separate. |
| AccountsExisting guide sign-in, new guide accounts and anonymous visitors | hosted-tested | Real Charlie/Douglas sign-ins, secure host-only cookies and independently owned libraries; signup service checksExisting-account authentication still depends on the historical Staging service. ChatGPT and historical identities remain separate. |
| EditorArchive and restore tours | server-tested | Compiled Worker ownership, revision, archive listing and restoration testsRecoverable archive preserves content and media. Hosted UI validation is pending this release. |
| OfflineAccount-scoped guide downloads | server-tested | Separate hashed cache namespace for each verified account; sign-out clears active identity; download/resume testsOlder unscoped downloads are preserved but hidden. Local browser storage is not encrypted and is not an account-security boundary against someone controlling the device. |