AI Voice Designer
Run ID: 69cca2ad3e7fb09ff16a3b152026-04-01Design
PantheraHive BOS
BOS Dashboard

AI Voice Design Specification: "ClarityPro"

This document outlines the detailed design specifications for a custom AI voice, codenamed "ClarityPro," engineered for professional, clear, and engaging communication. This voice is ideal for applications requiring a trustworthy, articulate, and consistent presence, such as corporate narration, intelligent virtual assistants, e-learning modules, and professional presentations.


1. Detailed Voice Design Specifications: "ClarityPro"

"ClarityPro" is designed to embody professionalism, warmth, and clarity, ensuring messages are delivered effectively and empathetically.

* Primary: Professional, calm, and informative.

* Secondary (Contextual):

* Empathetic: Slightly softer, warmer tone for support or sensitive topics.

* Engaging: Moderate upward inflection for questions or highlights in presentations.

* Authoritative: Firm but not harsh, for instructions or critical information.

* Reassuring: Smooth, even tone with a subtle downward inflection at sentence ends for confidence.

* Clarity: Exceptional articulation, ensuring every word is distinct.

* Smoothness: Natural flow, free from harshness or excessive breathiness.

* Resonance: Full-bodied vocal quality, adding depth and presence.

* Consistency: Maintains core characteristics across varying sentence structures and emotional contexts.


2. ElevenLabs Voice Design & Wireframe Description

Leveraging ElevenLabs' advanced voice design capabilities, "ClarityPro" will be crafted and refined through the following process and conceptual interface elements.

2.1 ElevenLabs Voice Lab / Voice Design Process

The creation of "ClarityPro" would involve the following steps within the ElevenLabs platform:

  1. Initial Voice Selection: Start with a high-quality, pre-trained male voice model as a base that closely matches the desired age and accent profile.
  2. Voice Settings Configuration (Sliders):

* Stability: Set to High (0.8 - 1.0) to ensure consistent vocal characteristics, tone, and delivery across all generated audio. This prevents unwanted fluctuations that could detract from professionalism.

* Clarity + Similarity Enhancement: Set to High (0.8 - 1.0). This crucial setting ensures maximum speech clarity, natural articulation, and a strong resemblance to the intended voice persona, even with varied input text.

* Style Exaggeration: Set to Moderate to Low (0.2 - 0.5). This allows for subtle, natural expressiveness without over-dramatizing the delivery, maintaining the professional and calm persona.

* Speaker Boost: Activated (On). This enhances the perceived presence and projection of the voice, making it sound more robust and commanding, ideal for professional applications.

  1. Prompting & Iteration:

* Diverse Text Inputs: Use a wide range of text samples, including informational passages, empathetic statements, instructions, and questions, to test the voice's versatility.

* A/B Testing: Generate audio with slightly varied slider settings and compare to refine the optimal balance for "ClarityPro."

* Contextual Testing: Evaluate the voice's performance in different scenarios (e.g., reading a corporate announcement vs. a customer support response).

  1. Fine-tuning & Customization: If necessary, utilize advanced Voice Lab features to further sculpt specific vocal nuances, ensuring the voice meets all "ClarityPro" specifications. This might involve creating a custom voice from scratch if the base models don't provide the exact desired starting point.

2.2 Conceptual Wireframe for Voice Configuration (within a custom UI)

While ElevenLabs provides its own interface, here's how the configuration options for "ClarityPro" might be presented in a simplified, custom application UI for a user designing or selecting such a voice:

Screen: "Voice Profile Customization - ClarityPro"

text • 2,067 chars
+-------------------------------------------------------------+
| **Header: Design Your AI Voice - ClarityPro**               |
| Subheader: Craft a professional, clear, and engaging voice. |
+-------------------------------------------------------------+
|                                                             |
| **1. Core Voice Characteristics**                           |
|   [Dropdown: Gender]      [Selected: Male]                  |
|   [Dropdown: Age Profile] [Selected: Mid-30s to 40s]        |
|   [Dropdown: Accent]      [Selected: Standard American]     |
|                                                             |
| **2. Vocal Tone & Style**                                   |
|   [Slider: Professionalism]  <--o----------------> [High]   |
|   [Slider: Warmth/Approachability] <--o-----------> [Medium-High]|
|   [Slider: Authority/Confidence]   <--o-----------> [Medium-High]|
|   [Slider: Expressiveness]   <----o---------------> [Subtle] |
|                                                             |
| **3. Speech Dynamics**                                      |
|   [Slider: Speech Pace]      <--o----------------> [Moderate] |
|   [Slider: Pitch (Relative)] <--o----------------> [Medium-Low]|
|   [Slider: Articulation Clarity] <--o-------------> [High]   |
|                                                             |
| **4. ElevenLabs Advanced Controls (Mapped)**                |
|   [Slider: Stability]        <--o----------------> [High]   |
|   [Slider: Clarity + Similarity] <--o-------------> [High]   |
|   [Slider: Style Exaggeration] <--o---------------> [Low]    |
|   [Toggle: Speaker Boost]    [ON/OFF]              [ON]     |
|                                                             |
| **5. Test Your Voice**                                      |
|   [Textarea: Enter text to preview voice...]                |
|   [Button: Play Preview]   [Button: Save Voice Profile]     |
|                                                             |
+-------------------------------------------------------------+
Sandboxed live preview

3. Color Palettes (for Associated UI/Branding)

When "ClarityPro" is integrated into an application or service, the accompanying visual design should reinforce its professional, reliable, and modern persona.

  • Primary Palette: Professional Trust

* #004AAD (Deep Corporate Blue): Represents trust, stability, and professionalism. Ideal for primary branding, headers, and key interactive elements.

* #2C3E50 (Charcoal Gray): Conveys sophistication, strength, and neutrality. Suitable for secondary text, backgrounds, and structural elements.

* #F8F8F8 (Light Off-White): Provides a clean, modern backdrop for content, enhancing readability and minimizing eye strain.

  • Accent Palette: Clarity & Innovation

* #00A896 (Teal Green): Suggests clarity, innovation, and a touch of human-centric design. Use for call-to-action buttons, highlights, and status indicators.

* #FFC300 (Muted Gold/Amber): Adds a subtle touch of warmth and optimism without being overly bright. Can be used for alerts, important notifications, or subtle branding elements.

  • Typography: Clean, modern sans-serif fonts such as "Inter," "Roboto," or "Open Sans" would complement the voice's clarity and professionalism.

4. UX Recommendations for "ClarityPro" Integration

To maximize the impact and effectiveness of the "ClarityPro" voice within any user experience, the following recommendations are crucial:

  1. Contextual Tone Adaptation:

* Informative/Neutral: Utilize the core professional tone for standard information delivery.

* Support/Error: Implement slight variations for empathy (e.g., slightly softer, more reassuring tone for error messages or sensitive customer support interactions).

* Urgent/Important: A slightly firmer, more direct tone with a clear, measured pace for critical alerts or instructions.

* Engagement: Subtle upward inflections or a slightly more dynamic pace for engaging content like presentations or interactive tutorials.

  1. Optimal Pacing & Pauses:

* Natural Conversational Flow: Ensure the voice doesn't sound rushed or overly slow. Introduce natural pauses at commas, periods, and logical breaks in sentences to mimic human speech patterns.

* Avoid Robotic Monotony: Vary sentence-level pacing slightly to prevent a monotonous delivery, even within the stable "ClarityPro" profile.

  1. Seamless Integration Points:

* Consistent Volume: Maintain a consistent output volume across all application contexts (web, mobile, IVR) to avoid jarring changes for the user.

* Accessibility: Provide options for users to adjust playback speed or volume if needed, adhering to accessibility standards.

* Smooth Transitions: If combined with other audio (e.g., background music, UI sounds), ensure "ClarityPro" fades in and out gracefully.

  1. Error Handling & Feedback:

* Clear Error Messaging: "ClarityPro" should deliver error messages with a clear, concise, and slightly more subdued tone to convey understanding without alarm.

* Confirmation Cues: Use distinct, positive vocal cues for successful actions or confirmations.

  1. User Feedback Loop:

* Monitor Performance: Implement analytics to track user engagement and satisfaction with voice interactions.

* Direct Feedback: Provide a mechanism for users to offer direct feedback on the voice's clarity, tone, and overall helpfulness, allowing for iterative improvements.

  1. Brand Alignment:

* Ensure "ClarityPro" consistently reflects and reinforces the overarching brand identity of the product or service it represents, becoming a recognizable and trusted "voice" of the brand.

ai_voice_designer.txt
Download source file
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547} "); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/**(.+?)**/g,"$1"); hc=hc.replace(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); }function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}