From 2e9024613080dfd28930fb4a9f14b6f0caa1460d Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 18 Mar 2026 21:02:37 +0000 Subject: [PATCH] feat: Vibe Architect dedicated mode, SEO follow-up fix (v1.8.0) --- CHANGELOG.md | 19 +++++++++++++++++++ README.md | 3 ++- app/vibe/page.tsx | 20 ++++++++++++++++++++ components/AIAssist.tsx | 26 +++++++++++++++++--------- package.json | 2 +- 5 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 app/vibe/page.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a5aa2..bb073f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.8.0] - 2026-03-18 21:02 UTC + +### Added +- **Vibe Architect Dedicated Mode** — Full-screen immersive AI coding experience + - New route: `/vibe` ([rommark.dev/tools/promptarch/vibe/](https://rommark.dev/tools/promptarch/vibe/)) + - No sidebar, no navigation — just AI Assist in full screen + - Rebranded as "Vibe Architect" with dedicated messaging + - `vibeMode` prop on AIAssist component for label overrides + +### Fixed +- **SEO follow-up preview** — Canvas no longer breaks when asking follow-up questions after SEO audit + - `isModifying` overlay only triggers for visual agents (code, web, app, design) — not SEO/content/SMM + - Non-visual agent follow-ups preserve existing canvas if no new preview is generated + +### Technical Details +- Files added: 1 (`app/vibe/page.tsx`) +- Files modified: 1 (AIAssist.tsx: +8/-3 lines) +- New prop: `vibeMode` on AIAssist component + ## [1.7.0] - 2026-03-18 20:44 UTC ### Added diff --git a/README.md b/README.md index e8d5b8c..8e47667 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # PromptArch: AI Orchestration Platform -> **Latest Version**: [v1.7.0](CHANGELOG.md#170---2026-03-18) (2026-03-18) +> **Latest Version**: [v1.8.0](CHANGELOG.md#180---2026-03-18) (2026-03-18) > **Development Note**: This entire platform was developed exclusively using [TRAE.AI IDE](https://trae.ai) powered by elite [GLM 4.7 model](https://z.ai/subscribe?ic=R0K78RJKNW). > **Learn more about this architecture [here](https://z.ai/subscribe?ic=R0K78RJKNW).** @@ -143,6 +143,7 @@ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | Version | Date | Highlights | |---------|------|------------| +| [1.8.0](CHANGELOG.md#180---2026-03-18) | 2026-03-18 21:02 UTC | Vibe Architect dedicated mode, SEO follow-up fix | | [1.7.0](CHANGELOG.md#170---2026-03-18) | 2026-03-18 20:44 UTC | Industry-grade SEO audit, plan flow fix for non-code agents | | [1.6.0](CHANGELOG.md#160---2026-03-18) | 2026-03-18 20:34 | SEO web audit, URL fetching, auto web search for SEO mode | | [1.5.0](CHANGELOG.md#150---2026-03-18) | 2026-03-18 20:29 | Modification progress overlay, preview blink fix | diff --git a/app/vibe/page.tsx b/app/vibe/page.tsx new file mode 100644 index 0000000..e9fce57 --- /dev/null +++ b/app/vibe/page.tsx @@ -0,0 +1,20 @@ +"use client"; + +import { useEffect } from "react"; +import dynamic from 'next/dynamic'; +import modelAdapter from "@/lib/services/adapter-instance"; + +const AIAssist = dynamic(() => import("@/components/AIAssist"), { ssr: false }); + +export default function VibePage() { + useEffect(() => { + console.log("[Vibe] Initializing services..."); + modelAdapter["qwenService"]["initialize"]?.(); + }, []); + + return ( +
+ +
+ ); +} diff --git a/components/AIAssist.tsx b/components/AIAssist.tsx index 08a4742..87a50dc 100644 --- a/components/AIAssist.tsx +++ b/components/AIAssist.tsx @@ -477,7 +477,7 @@ function parsePlanFromResponse(text: string): { plan: Record | null // --- Main Component --- -export default function AIAssist() { +export default function AIAssist({ vibeMode = false }: { vibeMode?: boolean } = {}) { const { language, aiAssistTabs, @@ -496,6 +496,8 @@ export default function AIAssist() { } = useStore(); const t = translations[language].aiAssist; const common = translations[language].common; + // Vibe mode: override labels + const _vibe = vibeMode ? { studioTitle: "Vibe Architect", studioDesc: "Describe your vision. Get plans, code, and live previews." } : {}; const activeTab = aiAssistTabs?.find(tab => tab.id === activeTabId) || aiAssistTabs?.[0] || { id: 'default', @@ -642,8 +644,9 @@ export default function AIAssist() { // SEO, content, smm, design, web, app agents go straight to preview const isCodeAgent = currentAgent === "code" || currentAgent === "general"; const wasIdle = !isApproval && isCodeAgent && (assistStep === "idle" || assistStep === "plan"); - // Detect if user is modifying existing code - if (assistStep === "preview") setIsModifying(true); + // Detect if user is modifying an existing visual artifact (not text-only agents like SEO/content) + const isVisualAgent = currentAgent === "code" || currentAgent === "web" || currentAgent === "app" || currentAgent === "design" || currentAgent === "general"; + if (assistStep === "preview" && isVisualAgent) setIsModifying(true); setIsProcessing(true); if (assistStep === "idle" && isCodeAgent) setAssistStep("plan"); @@ -866,15 +869,20 @@ export default function AIAssist() { setShowCanvas(true); if (isPreviewRenderable(lastParsedPreview)) setViewMode("preview"); } else if (!isCodeAgent && !wasIdle) { - // Non-code agent without preview: just return to idle - setAssistStep("idle"); + // Non-code agent follow-up without new preview: + // Keep existing canvas if we had one, otherwise go idle + if (previewData?.data) { + setAssistStep("preview"); + } else { + setAssistStep("idle"); + } } else { setAssistStep("idle"); } } catch (error) { console.error("Assist error:", error); - const message = error instanceof Error ? error.message : "AI Assist failed"; + const message = error instanceof Error ? error.message : "Vibe Architect failed"; const errorMsg: AIAssistMessage = { role: "assistant", content: message, timestamp: new Date() }; updateTabById(requestTabId, { history: [...aiAssistHistory, errorMsg] }); } finally { @@ -1159,7 +1167,7 @@ export default function AIAssist() {

Qwen Authentication Required

-

Sign in with Qwen to use AI Assist with this provider

+

Sign in with Qwen to use Vibe Architect with this provider

{qwenAuthError && (

{qwenAuthError}

)} @@ -1181,9 +1189,9 @@ export default function AIAssist() {
-

{t.studioTitle}

+

{(_vibe as any).studioTitle || t.studioTitle}

- {t.studioDesc} + {(_vibe as any).studioDesc || t.studioDesc}

{t.suggestions.map((chip: any) => ( diff --git a/package.json b/package.json index 1301438..52e7ad1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "promptarch", - "version": "1.7.0", + "version": "1.8.0", "description": "Transform vague ideas into production-ready prompts and PRDs", "scripts": { "dev": "next dev",