Skip to content

Commit 49bd768

Browse files
lambasuclaude
andcommitted
Add Lovable Stage View prototype (P07)
Group chat scenario: team adds Lovable agent, it builds a Morgan Collective landing page with live progress cards, then a completion card with a "View Live Preview" button that opens Teams Stage View — a full-screen immersive mock website rendered in-shell. Team members request edits; Lovable posts an updated card in place. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent e5c25a4 commit 49bd768

8 files changed

Lines changed: 757 additions & 0 deletions

File tree

src/App.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const PROTOTYPE_CHAT = {
1717
'earned-handoff-to-agency': 38,
1818
'facilitator-coordinates-agency': 39,
1919
'emoji-to-deploy': 40,
20+
'lovable-stage-view': 44,
2021
}
2122

2223
export default function App() {

src/components/ChatView.jsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import PromptSuggestions from './PromptSuggestions'
2323
import ChannelThreadRail from './ChannelThreadRail'
2424
import ChatHeader from './ChatHeader'
2525
import Compose from './Compose'
26+
import StageView from './StageView'
2627
import './ChatView.css'
2728

2829
// Convert a channel post (root + replies) into the message shape MessageRow
@@ -130,6 +131,7 @@ export default function ChatView({
130131
const [groupIntelAction, setGroupIntelAction] = useState(null) // null | 'confirmed' | 'skipped'
131132
const [p5Action, setP5Action] = useState(null) // null | 'confirmed' | 'skipped'
132133
const [p6State, setP6State] = useState(null) // null | 'prompted' | 'workflows' | 'agency'
134+
const [showStageView, setShowStageView] = useState(false)
133135
const messagesEndRef = useRef(null)
134136

135137
// Reset per-chat ephemeral state when activeChatId changes. Using the
@@ -155,6 +157,7 @@ export default function ChatView({
155157
setGroupIntelAction(null)
156158
setP5Action(null)
157159
setP6State(null)
160+
setShowStageView(false)
158161
setMainTyping(null)
159162
const intentMatches = navIntent && navIntent.chatId === activeChatId
160163
const intentHasSession = intentMatches && 'sessionId' in navIntent
@@ -907,7 +910,13 @@ export default function ChatView({
907910

908911
// P4: "Open this in Agency" card action — create a pre-seeded Agency session
909912
// and navigate there with the fix plan already loaded.
913+
// P7: "View Live Preview" card action — open Teams Stage View with the
914+
// Lovable-generated Morgan Collective site.
910915
const handleCardAction = ({ type }) => {
916+
if (type === 'open_stage_view') {
917+
setShowStageView(true)
918+
return
919+
}
911920
if (type !== 'open_in_agency') return
912921
const nowStr = nowTimeStr()
913922
const sessionId = `s36-hotfix-${Date.now()}`
@@ -1113,6 +1122,9 @@ export default function ChatView({
11131122
}}
11141123
/>
11151124
)}
1125+
{showStageView && (
1126+
<StageView onClose={() => setShowStageView(false)} />
1127+
)}
11161128
</div>
11171129
)
11181130
}

src/components/PrototypeGallery.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ const PROTOTYPES = [
6161
tag: 'E2E workflow',
6262
tagColor: '#8250DF',
6363
},
64+
{
65+
id: 'lovable-stage-view',
66+
number: '07',
67+
title: 'Lovable in group chat',
68+
description:
69+
'Team adds Lovable to a group chat and asks it to build their website. Lovable posts progress cards as it builds, then a completion card with a "View Live Preview" button. Click it to open Teams Stage View — a full-screen immersive preview. Request edits; Lovable updates the card in place.',
70+
chat: 'Morgan Collective website',
71+
tag: 'Stage View',
72+
tagColor: '#FF3B8B',
73+
},
6474
]
6575

6676
export default function PrototypeGallery({ onLaunch }) {

0 commit comments

Comments
 (0)