Live HTML/CSS/JS clones of the VibeFuse desktop app — shell chrome, navigation, widgets,
settings tabs, popups, cards, and the styling token pack. Classes match
src/renderer. Switch the theme in the header to restyle every clone.
Design tokens
Midnight Navy :root values. Other themes only override color / orb motion tokens.
Token swatches
Core surfaces, text, accent, gold, danger, and chrome from global.css.
styles/global.csstokens
--bg-0#06080d
--bg-1#0a1018
--bg-2#111827
--surfacergba(14, 20, 32, 0.66)
--text#eef2f8
--text-dim#9aa8bc
--accent#8fb0d4
--gold#c9a962
--danger#ff6b7a
--accent-deep#2a4568
--chrome-bgrgba(10, 16, 26, 0.76)
--ambient-a#243a58
Fonts: Outfit 320–700 and JetBrains Mono 400/500. Icons are Lucide SVGs. There is no .btn class — actions use .nav-item, .settings-btn, .icon-ghost, and .circle-btn.
Theme pack
Nine built-in [data-theme] presets plus the bundled Dark Snow styling pack.
Built-in themes
Picking a theme in Appearance clears any styling pack. Packs then override tokens on <html>.
shared/themes.tsstyling
Bundled pack: com.vibefuse.styling.dark-snow — silver frost tokens, snow particles on sidebar/canvas, frosted orb. Marketplace packs live in C:\vibefuse\styling.
Shell & chrome
Window frame, left rail, session strip, voice orb, and status chips from App.tsx.
App Shell
Full workspace chrome: ambient stage, title bar, sidebar, canvas, and status bar.
src/renderer/src/App.tsxshell
VibeFuseAI Agent Harness · v0.1.23
Session 1
Client site
Notes
Canvas
Your canvas is clear
Spawn a CLI, terminal, or browser from the left rail. Widgets stay draggable and marketplace-ready.
File menu open with recent-session flyout. Agents section open (Vibe Agent active). Widgets / Skills closed. Session 1 audible EQ, Client site muted, Notes quiet. Dock: Bot visible+active, Globe visible, YouTube hidden.
Title Bar
Brand, application menus, settings, and window controls.
src/renderer/src/components/TitleBar.tsxchrome
VibeFuseAI Agent Harness · v0.1.23
Closed File / Agent / Voice menus. Brand mark is an inline 44×44 SVG (no missing png).
App Menu Bar
File, Agent, and Voice menus with nested provider flyouts.
src/renderer/src/components/AppMenuBar.tsxchrome
Agent menu open. Provider flyout open with OpenAI active. Gemini uses the 4-point star; others are colored tiles.
Sidebar
Expanded left rail with category sections, voice orb, and settings.
src/renderer/src/components/Sidebar.tsxnav
Expanded rail. Agents open with Vibe Agent active. Widgets and Skills collapsed. Idle wake orb at 52px.
Sidebar Collapsed
Icon-only rail with category buttons and a compact voice orb.
src/renderer/src/components/Sidebar.tsxnav
.sidebar.collapsed with Agents / Widgets / Skills nav-cat-btn badges, 36px compact wake orb, and settings icon.
Nav Flyout
Browse-all panel that docks beside the sidebar for a category.
src/renderer/src/components/Sidebar.tsxnav
Widgets4
Absolute-positioned catalog clone of the portal flyout. Search + four widget rows (Browser, YouTube, HyperFrames, Video).
Session Tabs
Canvas session strip with mute, audible EQ, overflow menu, and new-session control.
Title “Canvas” plus workspace chip labeled VibeFuse.
Boot Crash
Inline-styled renderer error boundary when App fails to mount.
src/renderer/src/main.tsxerror
VibeFuse failed to render
TypeError: Cannot read properties of null (reading 'sessions')
at App (App.tsx:164:15)
at renderWithHooks (react-dom.development.js:15486:18)
at mountIndeterminateComponent (react-dom.development.js:20103:13)
at beginWork (react-dom.development.js:21626:16)
Exact inline styles from BootErrorBoundary in main.tsx, with a dummy stack.
Settings
Linear / Arc settings modal and every tab: General through About, plus shared controls.
Settings modal
Full settings dialog with sidebar search, grouped nav, and the General tab open.
SettingsModal.tsxdialog
General
Working folder and how agents install.
Workspace
Where agents work, and whether VibeFuse installs them for you.
Used when an agent has no folder of its own. Empty = your home folder.
Install missing agents on launch
When VibeFuse starts, install any agents that are not on this machine yet.
Install missing agents when you open them
If you open an agent that is not installed, install it before it starts.
Clone of SettingsModal: .overlay.settings-overlay + .settings with all 14 tabs. General is is-active.
Settings sidebar
Brand, search, and grouped nav for the 14 settings tabs.
Closed trigger plus a visible in-flow menu with search, selected, and active options.
ThemedSelect.tsxselect
Menu is position:relative so it stays in the card. One option is is-selected, one is is-active.
Widgets, overlays & cards
Canvas frames, agent/browser/terminal guests, dialogs, and the card families used in settings and menus.
Widget frame
Chrome title, version, font scale, expand, and close. is-ai-active pulses the accent ring while the agent works.
ChromeWidgetFrame.tsx
Vibe Agent
v1.0.0
13px
Vibe Agent
gpt-4o-mini
You
Sketch a weather widget for the canvas.
Vibe Agent
v1.0.0
13px
Working…
Idle frame plus .widget-frame.is-ai-active. Title is .widget-title-label; scale lives in .widget-scale.
Widget context menu
Right-click chrome menu: refresh, rename, and z-order.
MenuWidgetCanvas.tsx
Catalog uses position: static. Live menus are position: fixed and portaled to document.body.
Session menu
.widget-menu.session-menu from a session tab right-click.
SessionSessionTabs.tsx
Shares .widget-menu chrome. .session-menu only raises z-index so it sits above webviews.
Close session?
Confirm dialog with the danger action that stops widgets and terminals.
DialogSessionTabs.tsx
Close session?
Close “Launch reel”? Widgets and running terminals in this session will stop.
.overlay is pinned absolute inside .comp-preview.is-modal. Danger uses .session-dialog-actions .danger.
New session / rename widget
Field variants of .session-dialog — new canvas tab and widget title.
DialogAppMenuBar.tsx
Same .session-dialog + .field as the live overlays, shown as relative cards so both variants fit a row.
System prompt
App-menu overlay for the shared 12,000-character prompt.
OverlayAppMenuBar.tsx
System prompt
Optional instructions appended to Vibe Agent, voice requests, and recording summaries.
0 / 12,000
Classes: .overlay.app-prompt-overlay + .session-dialog.app-prompt-dialog. Counter is .help.
Folder picker
Choose-folder dialog with toolbar, path, rows, create-folder, and footer.
PickerFolderPickerModal.tsx
Choose folder
AI-Brain
.overlay.folder-picker-overlay + .folder-picker. Create row is .folder-picker-create.
Marketplace browse
Store modal with brand mark, spinner, and placeholder body.
MarketplaceMarketplaceBrowseModal.tsx
Marketplace
Browse and save widgets to your VibeFuse library
fuseintelligence.org marketplace
Live guest is a webview.marketplace-browse-webview. Catalog shows .marketplace-browse-placeholder.
Skill details
Inspect modal: kicker, title, meta grid, file list, and body excerpt.
SkillsSkillDetailsModal.tsx
Skill
hyperframes-cli
HyperFrames CLI development loop — init, add, catalog, render, and doctor.
OwnerFuse Intelligence
Version1.4.0
DownloadedYes
PurchasedYes
SKILL.md
---
name: hyperframes-cli
description: CLI loop for HyperFrames compositions
---
Use this skill when running hyperframes init, add, catalog,
capture, lint, preview, or render.
.skill-details-kicker, .skill-details-grid, and .skill-details-files with an .is-active file button.
Slash command menu
Type / in the composer to insert a skill. One row is is-active.
AgentSlashCommandMenu.tsx
Skills
Position overridden to relative for the catalog. Live menu is absolute above .agent-composer-row.
Agent shell
Full Vibe Agent: topbar, tabs, thread, status, and composer.
AgentCustomAgentWidget.tsx
Vibe Agent
C:\xampp\htdocs\AI-Brain\VibeFuse
You
List the files in this workspace and sketch a weather widget.
Agent
Workspace is VibeFuse. I’ll add a compact weather card with temp, condition, and a 3-day strip.
tsx
<article className="weather-card">…</article>
Working...
Real shell: .agent-shell → topbar, tabs, thread, composer. Hint class is .agent-composer-hint.
Agent empty
Idle chat state before the first message.
AgentCustomAgentWidget.tsx
Ready when you are
Chat with your configured provider. Type / to insert a skill or MCP connection as a slash command — the agent must use it for that prompt.
.agent-empty + .agent-empty-orb. Shown when the thread has no messages and the agent is idle.
Agent turn details
Open activity accordion with tool items — one failed.