Area: mobieusAI (audit p11) · Surface: mobieusAI Q&A drawer + AssistantConversation · Dimension: competitor-gap · Severity: major
ChatGPT, Claude, Intercom, and every serious AI helper give the user a sidebar of past conversations to resume and search. mobieusAI stores the data (multi-turn memory, sources_json, per-conversation spend) but exposes none of it: refresh the page and the conversation is gone from the UI forever, even though it still exists in ai_assistant_conversations. This wastes the persistence work already done and breaks the expectation set by every competitor.
Evidence
AssistantConversation (platform/src/Models/AssistantConversation.php) persists conversations and messages (create/addMessage/recentTurns), and AssistantAI.php:133-140 records every turn. But there is no list/show endpoint: routes.php has `/api/messenger/conversations` for DMs (routes.php:1111) yet no equivalent for AI conversations. The drawer's only history control is the 'New conversation' button which simply resets the DOM and nulls convId: mobieus-ai-drawer.php:155-160 — `convId = null; stream.innerHTML = '<div class="empty">New conversation…'`. On page reload the prior thread is unreachable.
Suggested fix. Add GET endpoints to list a user's conversations and load a single conversation's messages (with sources), and render a history list/picker in the drawer. The ownership gate (AssistantConversation::ownedBy) already exists to make this safe.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus