Claude/build polish plan m x8 p3 #4778
15 changed files+68−72
Modified.github/workflows/build.yml+3−3View fileUnifiedSplit
@@ -1,4 +1,4 @@
1name: Build & Release Voxlen
1name: Build & Release Marco Reid Voice
22
33on:
44 push:
@@ -138,9 +138,9 @@ jobs:
138138 uses: softprops/action-gh-release@v2
139139 with:
140140 tag_name: v${{ steps.version.outputs.version }}
141 name: Voxlen v${{ steps.version.outputs.version }}
141 name: Marco Reid Voice v${{ steps.version.outputs.version }}
142142 body: |
143 Voxlen v${{ steps.version.outputs.version }} — AI-powered voice dictation for professionals.
143 Marco Reid Voice v${{ steps.version.outputs.version }} — AI-powered voice dictation for professionals.
144144
145145 Download the installer for your OS below.
146146
Modifiedindex.html+1−1View fileUnifiedSplit
@@ -4,7 +4,7 @@
44 <meta charset="UTF-8" />
55 <link rel="icon" type="image/svg+xml" href="/vox-icon.svg" />
66 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7 <title>Voxlen</title>
7 <title>Marco Reid Voice</title>
88 </head>
99 <body class="bg-surface-0 text-surface-950 antialiased">
1010 <div id="root"></div>
Modifiedlanding/index.html+3−3View fileUnifiedSplit
@@ -3,7 +3,7 @@
33 <head>
44 <meta charset="UTF-8" />
55 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>Voxlen — Speak. It is done.</title>
6 <title>Marco Reid Voice — Speak. It is done.</title>
77 <meta name="description" content="The most advanced AI dictation tool. Real-time voice-to-text, AI grammar correction, and universal text injection. Works everywhere, never interrupts." />
88 <link rel="canonical" href="https://voxlen.ai/" />
99 <meta property="og:title" content="Voxlen — AI Voice Dictation" />
@@ -15,7 +15,7 @@
1515 <meta property="og:image:width" content="1200" />
1616 <meta property="og:image:height" content="630" />
1717 <meta name="twitter:card" content="summary_large_image" />
18 <meta name="twitter:title" content="Voxlen — AI Voice Dictation" />
18 <meta name="twitter:title" content="Marco Reid Voice — AI Voice Dictation" />
1919 <meta name="twitter:description" content="Speak naturally. AI transcribes, polishes, and injects text into any app. 20+ languages. Works in every app." />
2020 <meta name="twitter:image" content="https://voxlen.ai/og-image.svg" />
2121 <meta name="theme-color" content="#7345D1" />
@@ -24,7 +24,7 @@
2424 {
2525 "@context": "https://schema.org",
2626 "@type": "SoftwareApplication",
27 "name": "Voxlen",
27 "name": "Marco Reid Voice",
2828 "applicationCategory": "ProductivityApplication",
2929 "operatingSystem": "macOS, Windows, Linux, iOS, Android",
3030 "description": "AI-powered voice dictation with real-time grammar correction and universal text injection. Designed for professionals including lawyers and accountants.",
Modifiedlanding/src/App.tsx+37−41View fileUnifiedSplit
@@ -115,7 +115,7 @@ function Navbar() {
115115 <div className="w-8 h-8 rounded-lg bg-marcoreid-600 flex items-center justify-center">
116116 <Mic className="h-4 w-4 text-white" />
117117 </div>
118 <span className="text-lg font-bold tracking-tight">Voxlen</span>
118 <span className="text-lg font-bold tracking-tight">Marco Reid Voice</span>
119119 </div>
120120 <div className="hidden md:flex items-center gap-8 text-sm text-zinc-400">
121121 <a href="#features" className="hover:text-white transition-colors">Features</a>
@@ -241,7 +241,7 @@ function Hero() {
241241 <div className="w-5 h-5 rounded bg-marcoreid-600 flex items-center justify-center">
242242 <Mic className="h-3 w-3 text-white" />
243243 </div>
244 <span className="text-xs font-semibold text-zinc-300">Voxlen</span>
244 <span className="text-xs font-semibold text-zinc-300">Marco Reid Voice</span>
245245 <span className="px-1.5 py-0.5 rounded-full bg-green-500/10 border border-green-500/20 text-green-400 text-[10px] font-medium">
246246 Listening
247247 </span>
@@ -330,7 +330,7 @@ function Features() {
330330 {
331331 icon: Shield,
332332 title: "Never Interrupted",
333 description: "Unlike Windows+H or Apple Dictation, Voxlen NEVER stops when you switch apps. Runs as a background service with its own audio pipeline.",
333 description: "Unlike Windows+H or Apple Dictation, Marco Reid Voice NEVER stops when you switch apps. Runs as a background service with its own audio pipeline.",
334334 color: "text-green-400",
335335 bg: "bg-green-400/10",
336336 },
@@ -490,7 +490,7 @@ function Comparison() {
490490 { name: "Grammarly", price: "$12/mo", realtime: false, neverInterrupts: false, grammar: true, anyApp: false, offline: false, extMic: false },
491491 { name: "Dragon", price: "$700", realtime: true, neverInterrupts: false, grammar: false, anyApp: true, offline: true, extMic: false },
492492 { name: "Wispr Flow", price: "$12/mo", realtime: true, neverInterrupts: true, grammar: false, anyApp: true, offline: false, extMic: false },
493 { name: "Voxlen", price: "$29/mo", realtime: true, neverInterrupts: true, grammar: true, anyApp: true, offline: true, extMic: true, highlight: true },
493 { name: "Marco Reid Voice", price: "$29/mo", realtime: true, neverInterrupts: true, grammar: true, anyApp: true, offline: true, extMic: true, highlight: true },
494494 ];
495495
496496 return (
@@ -507,7 +507,7 @@ function Comparison() {
507507 Comparison
508508 </motion.p>
509509 <motion.h2 variants={fadeUp} className="text-4xl md:text-5xl font-black tracking-tight">
510 See why Voxlen wins.
510 See why we win.
511511 </motion.h2>
512512 </motion.div>
513513
@@ -723,7 +723,7 @@ function Pricing() {
723723 Pro and Professional include a 14-day free trial. No credit card required. Cancel anytime.
724724 All AI costs (speech-to-text and grammar correction) are included — your subscription
725725 covers everything. Audio still streams directly from your device to AI providers and is
726 never routed through or stored by Voxlen.
726 never routed through or stored by Marco Reid.
727727 </p>
728728 </div>
729729 </section>
@@ -734,11 +734,11 @@ function FAQ() {
734734 const faqs = [
735735 {
736736 q: "How is this different from Windows+H or Apple Dictation?",
737 a: "Those stop working the moment you switch apps or click somewhere else. Voxlen runs as a background service — it NEVER gets interrupted. Plus, it has AI grammar correction, works with your external mic, and supports 20+ languages.",
737 a: "Those stop working the moment you switch apps or click somewhere else. Marco Reid Voice runs as a background service — it NEVER gets interrupted. Plus, it has AI grammar correction, works with your external mic, and supports 20+ languages.",
738738 },
739739 {
740740 q: "Why is this better than Grammarly?",
741 a: "Grammarly is a typing-focused tool that killed their voice features — and their grammar engine is weaker than the frontier AI models we use. Voxlen is built on Claude, the most capable language AI available, and combines real-time dictation with grammar correction in a single product. It is more advanced and more accurate, and it works everywhere you type — not just inside Grammarly's browser extension.",
741 a: "Grammarly is a typing-focused tool that killed their voice features — and their grammar engine is weaker than the frontier AI models we use. Marco Reid Voice is built on Claude, the most capable language AI available, and combines real-time dictation with grammar correction in a single product. It is more advanced and more accurate, and it works everywhere you type — not just inside Grammarly's browser extension.",
742742 },
743743 {
744744 q: "Do I need to set up API keys or separate accounts?",
@@ -750,15 +750,15 @@ function FAQ() {
750750 },
751751 {
752752 q: "Do I need an internet connection?",
753 a: "Not always. Voxlen includes a fully offline mode that runs entirely on your device — ideal for flights or sensitive work. Our cloud models give higher accuracy and lower latency, but you always have the choice.",
753 a: "Not always. Marco Reid Voice includes a fully offline mode that runs entirely on your device — ideal for flights or sensitive work. Our cloud models give higher accuracy and lower latency, but you always have the choice.",
754754 },
755755 {
756756 q: "Does it work with my external USB microphone?",
757 a: "Yes. Voxlen auto-detects external mics (Razer, Blue Yeti, Rode, HyperX, etc.) and prioritizes them over your built-in laptop mic. You will get a warning if you are accidentally using the internal mic.",
757 a: "Yes. Marco Reid Voice auto-detects external mics (Razer, Blue Yeti, Rode, HyperX, etc.) and prioritizes them over your built-in laptop mic. You will get a warning if you are accidentally using the internal mic.",
758758 },
759759 {
760760 q: "Is my audio private? I handle privileged information.",
761 a: "Yes. Even though we provide the AI infrastructure as part of your subscription, your audio and transcripts are NEVER routed through or stored on Voxlen-operated servers. Audio streams directly from your device to the AI provider using zero-retention endpoints and is discarded immediately after transcription. On the Professional plan, we enable the strictest zero-retention guarantees from every AI provider. Offline mode means nothing leaves your device at all. This is a hard architectural rule we will never compromise.",
761 a: "Yes. Even though we provide the AI infrastructure as part of your subscription, your audio and transcripts are NEVER routed through or stored on Marco Reid Voice-operated servers. Audio streams directly from your device to the AI provider using zero-retention endpoints and is discarded immediately after transcription. On the Professional plan, we enable the strictest zero-retention guarantees from every AI provider. Offline mode means nothing leaves your device at all. This is a hard architectural rule we will never compromise.",
762762 },
763763 {
764764 q: "Can my firm get a team plan?",
@@ -822,7 +822,7 @@ const GH_RELEASES_PAGE = `https://github.com/${GH_OWNER}/${GH_REPO}/releases/lat
822822const GH_API_LATEST = `https://api.github.com/repos/${GH_OWNER}/${GH_REPO}/releases/latest`;
823823const APP_VERSION = "1.0.9";
824824
825type Platform = "mac-arm" | "mac-intel" | "windows" | "linux" | "unknown";
825type Platform = "mac-arm" | "windows" | "linux" | "unknown";
826826
827827type ReleaseAsset = { name: string; browser_download_url: string };
828828
@@ -854,11 +854,7 @@ function detectPlatform(): Platform {
854854 const ua = window.navigator.userAgent;
855855 const platform = window.navigator.platform || "";
856856 if (/Mac/i.test(platform) || /Mac/i.test(ua)) {
857 // Best-effort Apple Silicon detection
858 if (/ARM|Apple/i.test(ua) || (window.navigator as Navigator & { userAgentData?: { architecture?: string } }).userAgentData?.architecture === "arm") {
859 return "mac-arm";
860 }
861 return "mac-arm"; // Default modern Macs to ARM; Intel users can pick manually
857 return "mac-arm";
862858 }
863859 if (/Win/i.test(platform) || /Windows/i.test(ua)) return "windows";
864860 if (/Linux/i.test(platform) || /Linux/i.test(ua)) return "linux";
@@ -1083,17 +1079,17 @@ function Footer({ onOpenLegal }: { onOpenLegal: (type: "privacy" | "terms") => v
10831079 <div className="w-6 h-6 rounded bg-marcoreid-600 flex items-center justify-center">
10841080 <Mic className="h-3 w-3 text-white" />
10851081 </div>
1086 <span className="text-sm font-bold">Voxlen</span>
1082 <span className="text-sm font-bold">Marco Reid Voice</span>
10871083 <span className="text-xs text-zinc-600">v{APP_VERSION}</span>
10881084 </div>
10891085 <div className="flex items-center gap-6 text-xs text-zinc-500">
10901086 <button onClick={() => onOpenLegal("privacy")} className="hover:text-white transition-colors">Privacy Policy</button>
10911087 <button onClick={() => onOpenLegal("terms")} className="hover:text-white transition-colors">Terms of Service</button>
1092 <a href="mailto:support@voxlen.ai" className="hover:text-white transition-colors">Support</a>
1088 <a href="mailto:support@marcoreid.com" className="hover:text-white transition-colors">Support</a>
10931089 <a href="https://github.com/ccantynz-alt/voxlen" target="_blank" rel="noopener noreferrer" className="hover:text-white transition-colors">GitHub</a>
10941090 </div>
10951091 <p className="text-xs text-zinc-600">
1096 © {new Date().getFullYear()} Voxlen. All rights reserved.
1092 © {new Date().getFullYear()} Marco Reid. All rights reserved.
10971093 </p>
10981094 </div>
10991095 </div>
@@ -1138,8 +1134,8 @@ function PrivacyContent() {
11381134 <p className="text-xs text-zinc-500">Last updated: April 2026</p>
11391135
11401136 <p className="text-zinc-300 leading-relaxed">
1141 Voxlen ("we", "us", "our") is committed to protecting your privacy. This policy explains
1142 how our voice dictation application handles your data. We designed Voxlen with
1137 Marco Reid Voice ("we", "us", "our") is committed to protecting your privacy. This policy explains
1138 how our voice dictation application handles your data. We designed Marco Reid Voice with
11431139 privacy-first principles, especially for professionals handling sensitive information.
11441140 </p>
11451141
@@ -1148,29 +1144,29 @@ function PrivacyContent() {
11481144 <li><strong className="text-zinc-200">Audio recordings</strong> — We never store, log, or retain your voice audio. Audio is streamed to your chosen STT provider and immediately discarded after transcription.</li>
11491145 <li><strong className="text-zinc-200">Transcribed text</strong> — Your dictated text stays on your device. We never transmit transcription content to our servers.</li>
11501146 <li><strong className="text-zinc-200">Grammar-corrected content</strong> — Text sent for AI grammar correction goes directly to your chosen provider (Anthropic or OpenAI) using your own API key. We have no access to this content.</li>
1151 <li><strong className="text-zinc-200">Documents or files</strong> — Voxlen never reads, scans, or accesses any files on your device beyond its own configuration.</li>
1147 <li><strong className="text-zinc-200">Documents or files</strong> — Marco Reid Voice never reads, scans, or accesses any files on your device beyond its own configuration.</li>
11521148 </ul>
11531149
11541150 <h2 className="text-lg font-bold mt-8">2. Data Processing Architecture</h2>
11551151 <p className="text-zinc-300 leading-relaxed">
1156 Voxlen operates as a <strong>pass-through</strong> application. Even though paid plans
1152 Marco Reid Voice operates as a <strong>pass-through</strong> application. Even though paid plans
11571153 include AI infrastructure as part of your subscription, your data flows directly between
1158 your device and the underlying AI providers — never through Voxlen-operated servers:
1154 your device and the underlying AI providers — never through Marco Reid Voice-operated servers:
11591155 </p>
11601156 <ul className="text-zinc-400 space-y-2 list-disc pl-5">
11611157 <li><strong className="text-zinc-200">Speech-to-Text:</strong> Audio streams directly from your device to the speech-to-text provider on zero-retention endpoints. In offline mode, audio never leaves your device.</li>
11621158 <li><strong className="text-zinc-200">Grammar Correction:</strong> Text is sent directly from your device to the grammar AI provider (Anthropic or OpenAI) on zero-retention endpoints. We have no intermediary server.</li>
11631159 <li><strong className="text-zinc-200">Text Injection:</strong> All text injection happens locally via OS-level APIs. No network transmission involved.</li>
1164 <li><strong className="text-zinc-200">API credentials:</strong> Voxlen provisions provider credentials as part of your subscription, but credentials are issued to your device and used only for direct device-to-provider traffic.</li>
1160 <li><strong className="text-zinc-200">API credentials:</strong> Marco Reid Voice provisions provider credentials as part of your subscription, but credentials are issued to your device and used only for direct device-to-provider traffic.</li>
11651161 </ul>
11661162
11671163 <h2 className="text-lg font-bold mt-8">3. Confidentiality for Legal & Accounting Professionals</h2>
11681164 <p className="text-zinc-300 leading-relaxed">
1169 We understand that attorneys, accountants, and other professionals using Voxlen may handle
1170 privileged or confidential information. Voxlen is designed to respect these obligations:
1165 We understand that attorneys, accountants, and other professionals using Marco Reid Voice may handle
1166 privileged or confidential information. Marco Reid Voice is designed to respect these obligations:
11711167 </p>
11721168 <ul className="text-zinc-400 space-y-2 list-disc pl-5">
1173 <li>No Voxlen-operated server ever receives your content — this is a hard architectural rule</li>
1169 <li>No Marco Reid Voice-operated server ever receives your content — this is a hard architectural rule</li>
11741170 <li>Session history is stored only on your local device and never synced to our infrastructure</li>
11751171 <li>Custom vocabulary and dictionaries remain local to your device</li>
11761172 <li>All AI provider traffic uses zero-retention endpoints</li>
@@ -1180,7 +1176,7 @@ function PrivacyContent() {
11801176
11811177 <h2 className="text-lg font-bold mt-8">4. Analytics & Telemetry</h2>
11821178 <p className="text-zinc-300 leading-relaxed">
1183 Voxlen collects minimal, anonymous usage telemetry to improve the product:
1179 Marco Reid Voice collects minimal, anonymous usage telemetry to improve the product:
11841180 </p>
11851181 <ul className="text-zinc-400 space-y-2 list-disc pl-5">
11861182 <li>Application launch and feature usage counts (no content)</li>
@@ -1193,7 +1189,7 @@ function PrivacyContent() {
11931189
11941190 <h2 className="text-lg font-bold mt-8">5. Third-Party Services</h2>
11951191 <p className="text-zinc-300 leading-relaxed">
1196 Voxlen includes AI infrastructure as part of your paid subscription. Your audio and text
1192 Marco Reid Voice includes AI infrastructure as part of your paid subscription. Your audio and text
11971193 are processed by our underlying AI providers on zero-retention endpoints:
11981194 </p>
11991195 <ul className="text-zinc-400 space-y-2 list-disc pl-5">
@@ -1222,12 +1218,12 @@ function TermsContent() {
12221218 <p className="text-xs text-zinc-500">Last updated: April 2026</p>
12231219
12241220 <p className="text-zinc-300 leading-relaxed">
1225 By downloading or using Voxlen, you agree to these terms. Please read them carefully.
1221 By downloading or using Marco Reid Voice, you agree to these terms. Please read them carefully.
12261222 </p>
12271223
12281224 <h2 className="text-lg font-bold mt-8">1. Service Description</h2>
12291225 <p className="text-zinc-300 leading-relaxed">
1230 Voxlen is a desktop and mobile application that provides voice-to-text dictation with
1226 Marco Reid Voice is a desktop and mobile application that provides voice-to-text dictation with
12311227 AI-powered grammar correction and universal text injection. The application runs locally
12321228 on your device and connects to third-party APIs using your own credentials.
12331229 </p>
@@ -1236,14 +1232,14 @@ function TermsContent() {
12361232 <p className="text-zinc-300 leading-relaxed">
12371233 Paid plans include all AI infrastructure (speech-to-text and grammar correction) as part of
12381234 your subscription. You do not need to provide your own API keys. Audio streams directly
1239 from your device to the relevant AI providers on zero-retention endpoints — Voxlen
1240 provisions the credentials, but your content never passes through Voxlen-operated
1235 from your device to the relevant AI providers on zero-retention endpoints — Marco Reid Voice
1236 provisions the credentials, but your content never passes through Marco Reid Voice-operated
12411237 infrastructure. Advanced users may optionally supply their own API keys.
12421238 </p>
12431239
12441240 <h2 className="text-lg font-bold mt-8">3. Subscription Plans</h2>
12451241 <p className="text-zinc-300 leading-relaxed">
1246 Voxlen offers Free, Pro ($29/month), Professional ($79/month for legal and accounting
1242 Marco Reid Voice offers Free, Pro ($29/month), Professional ($79/month for legal and accounting
12471243 teams), and Lifetime ($599 one-time) plans. The Free plan includes limited dictation. Paid
12481244 plans unlock all features and include all AI costs. Subscriptions can be cancelled at any
12491245 time. We offer a 14-day free trial for Pro and Professional with no credit card required.
@@ -1260,28 +1256,28 @@ function TermsContent() {
12601256
12611257 <h2 className="text-lg font-bold mt-8">5. Intellectual Property</h2>
12621258 <p className="text-zinc-300 leading-relaxed">
1263 Voxlen and its original content, features, and functionality are owned by Voxlen and are
1259 Marco Reid Voice and its original content, features, and functionality are owned by Marco Reid Voice and are
12641260 protected by international copyright and trademark laws. Your transcribed content remains
1265 entirely yours — we claim no rights over content you create using Voxlen.
1261 entirely yours — we claim no rights over content you create using Marco Reid Voice.
12661262 </p>
12671263
12681264 <h2 className="text-lg font-bold mt-8">6. Disclaimer of Warranties</h2>
12691265 <p className="text-zinc-300 leading-relaxed">
1270 Voxlen is provided "as is" without warranties of any kind. We do not guarantee that
1266 Marco Reid Voice is provided "as is" without warranties of any kind. We do not guarantee that
12711267 transcriptions or grammar corrections will be error-free. You should review all output,
12721268 especially for legal, medical, or financial documents.
12731269 </p>
12741270
12751271 <h2 className="text-lg font-bold mt-8">7. Limitation of Liability</h2>
12761272 <p className="text-zinc-300 leading-relaxed">
1277 Voxlen shall not be liable for any indirect, incidental, special, consequential, or punitive
1273 Marco Reid Voice shall not be liable for any indirect, incidental, special, consequential, or punitive
12781274 damages resulting from your use of the application, including but not limited to errors in
12791275 transcription or grammar correction.
12801276 </p>
12811277
12821278 <h2 className="text-lg font-bold mt-8">8. Changes to Terms</h2>
12831279 <p className="text-zinc-300 leading-relaxed">
1284 We may update these terms from time to time. Continued use of Voxlen after changes
1280 We may update these terms from time to time. Continued use of Marco Reid Voice after changes
12851281 constitutes acceptance of the new terms. We will notify users of significant changes
12861282 through the application.
12871283 </p>
Modifiedsrc-tauri/capabilities/default.json+1−1View fileUnifiedSplit
@@ -1,7 +1,7 @@
11{
22 "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-utils/schema.json",
33 "identifier": "default",
4 "description": "Default capabilities for Voxlen",
4 "description": "Default capabilities for Marco Reid Voice",
55 "windows": ["main"],
66 "permissions": [
77 "core:default",
Modifiedsrc-tauri/src/lib.rs+5−5View fileUnifiedSplit
@@ -68,12 +68,12 @@ pub fn run() {
6868 app.manage(text_injection::InjectorState::new(injector));
6969
7070 // Build system tray menu
71 let show_item = MenuItem::with_id(app, "show", "Show Voxlen", true, None::<&str>)?;
71 let show_item = MenuItem::with_id(app, "show", "Show Marco Reid Voice", true, None::<&str>)?;
7272 let dictate_item = MenuItem::with_id(app, "dictate", "Start Dictation", true, None::<&str>)?;
7373 let grammar_item = MenuItem::with_id(app, "grammar", "Grammar Panel", true, None::<&str>)?;
7474 let separator = MenuItem::with_id(app, "sep", "────────────", false, None::<&str>)?;
7575 let settings_item = MenuItem::with_id(app, "settings", "Settings", true, None::<&str>)?;
76 let quit_item = MenuItem::with_id(app, "quit", "Quit Voxlen", true, None::<&str>)?;
76 let quit_item = MenuItem::with_id(app, "quit", "Quit Marco Reid Voice", true, None::<&str>)?;
7777
7878 let menu = Menu::with_items(
7979 app,
@@ -89,7 +89,7 @@ pub fn run() {
8989 )?;
9090
9191 let _tray = TrayIconBuilder::new()
92 .tooltip("Voxlen — AI voice dictation for legal and accounting professionals")
92 .tooltip("Marco Reid Voice — AI voice dictation for legal and accounting professionals")
9393 .menu(&menu)
9494 .show_menu_on_left_click(false)
9595 .on_menu_event(move |app, event| {
@@ -138,7 +138,7 @@ pub fn run() {
138138 })
139139 .build(app)?;
140140
141 log::info!("Voxlen initialized successfully");
141 log::info!("Marco Reid Voice initialized successfully");
142142 Ok(())
143143 })
144144 .invoke_handler(tauri::generate_handler![
@@ -198,5 +198,5 @@ pub fn run() {
198198 }
199199 })
200200 .run(tauri::generate_context!())
201 .expect("error while running Voxlen");
201 .expect("error while running Marco Reid Voice");
202202}
Modifiedsrc-tauri/tauri.conf.json+5−5View fileUnifiedSplit
@@ -1,7 +1,7 @@
11{
22 "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json",
33 "productName": "Voxlen",
4 "version": "1.0.8",
4 "version": "1.0.9",
55 "identifier": "com.marcoreid.voice",
66 "build": {
77 "beforeDevCommand": "npm run dev",
@@ -14,7 +14,7 @@
1414 "windows": [
1515 {
1616 "label": "main",
17 "title": "Voxlen",
17 "title": "Marco Reid Voice",
1818 "width": 1100,
1919 "height": 720,
2020 "minWidth": 800,
@@ -30,7 +30,7 @@
3030 "trayIcon": {
3131 "iconPath": "icons/icon.png",
3232 "iconAsTemplate": true,
33 "tooltip": "Voxlen"
33 "tooltip": "Marco Reid Voice"
3434 },
3535 "security": {
3636 "csp": null
@@ -48,8 +48,8 @@
4848 ],
4949 "category": "Productivity",
5050 "shortDescription": "AI-powered voice dictation for professionals",
51 "longDescription": "Voxlen is the most advanced AI voice dictation desktop app. Speak naturally to dictate legal letters, court filings, demand letters, tax advisories, and audit opinions — with real-time Claude enhancement, matter-aware context, custom vocabulary, and injection into any application.",
52 "copyright": "Copyright 2026 Voxlen",
51 "longDescription": "Marco Reid Voice is the most advanced AI voice dictation desktop app. Speak naturally to dictate legal letters, court filings, demand letters, tax advisories, and audit opinions — with real-time Claude enhancement, matter-aware context, custom vocabulary, and injection into any application.",
52 "copyright": "Copyright 2026 Marco Reid",
5353 "macOS": {
5454 "entitlements": "Entitlements.plist",
5555 "minimumSystemVersion": "12.0",
Modifiedsrc/App.tsx+1−1View fileUnifiedSplit
@@ -73,7 +73,7 @@ export default function App() {
7373
7474 // Load saved settings from localStorage
7575 try {
76 const saved = localStorage.getItem("voxlen_settings");
76 const saved = localStorage.getItem("marcoreid_settings");
7777 if (saved) {
7878 useSettingsStore.getState().updateSettings(JSON.parse(saved));
7979 }
Modifiedsrc/components/settings/SettingsPanel.tsx+2−2View fileUnifiedSplit
@@ -81,7 +81,7 @@ function useSettingsPersistence() {
8181 } catch {
8282 try {
8383 localStorage.setItem(
84 "voxlen_settings",
84 "marcoreid_settings",
8585 JSON.stringify({
8686 preferredDeviceId: settings.preferredDeviceId,
8787 sttEngine: settings.sttEngine,
@@ -801,7 +801,7 @@ function AppearanceSettings() {
801801
802802 return (
803803 <div className="space-y-6 max-w-lg">
804 <SectionHeader title="Appearance" description="Customize how Voxlen looks." />
804 <SectionHeader title="Appearance" description="Customize how Marco Reid Voice looks." />
805805
806806 <SettingRow>
807807 <Select
Modifiedsrc/lib/constants.ts+2−2View fileUnifiedSplit
@@ -1,5 +1,5 @@
1export const APP_NAME = "Voxlen";
2export const APP_VERSION = "1.0.8";
1export const APP_NAME = "Marco Reid Voice";
2export const APP_VERSION = "1.0.9";
33export const APP_DESCRIPTION = "AI-powered voice dictation for professionals";
44
55export const SUPPORTED_LANGUAGES = [
Modifiedsrc/lib/export.ts+2−2View fileUnifiedSplit
@@ -48,7 +48,7 @@ function formatAsText(segments: TranscriptionSegment[]): string {
4848
4949function formatAsMarkdown(segments: TranscriptionSegment[]): string {
5050 const lines = [
51 "# Voxlen Transcript",
51 "# Marco Reid Voice Transcript",
5252 "",
5353 `**Date:** ${new Date().toLocaleDateString()}`,
5454 `**Words:** ${segments.reduce((c, s) => c + (s.correctedText || s.text).split(/\s+/).filter(Boolean).length, 0)}`,
@@ -77,7 +77,7 @@ function formatAsJson(segments: TranscriptionSegment[]): string {
7777 return JSON.stringify(
7878 {
7979 version: "1.0",
80 app: "Voxlen",
80 app: "Marco Reid Voice",
8181 exported: new Date().toISOString(),
8282 segments: segments.map((s) => ({
8383 id: s.id,
Modifiedsrc/stores/flywheel.ts+2−2View fileUnifiedSplit
@@ -207,7 +207,7 @@ export async function loadFlywheel(): Promise<void> {
207207 });
208208 } catch {
209209 try {
210 const saved = localStorage.getItem("voxlen_flywheel");
210 const saved = localStorage.getItem("marcoreid_flywheel");
211211 if (saved) {
212212 const parsed = JSON.parse(saved);
213213 useFlywheelStore.setState({
@@ -238,7 +238,7 @@ async function persistFlywheel(): Promise<void> {
238238 await store.save();
239239 } catch {
240240 try {
241 localStorage.setItem("voxlen_flywheel", JSON.stringify(data));
241 localStorage.setItem("marcoreid_flywheel", JSON.stringify(data));
242242 } catch {
243243 // Ignore
244244 }
Modifiedsrc/stores/history.ts+2−2View fileUnifiedSplit
@@ -51,7 +51,7 @@ export async function loadHistory(): Promise<void> {
5151 }
5252 } catch {
5353 try {
54 const saved = localStorage.getItem("voxlen_history");
54 const saved = localStorage.getItem("marcoreid_history");
5555 if (saved) {
5656 const parsed = JSON.parse(saved) as HistoryEntry[];
5757 useHistoryStore.setState({ entries: parsed });
@@ -70,7 +70,7 @@ async function persistHistory(entries: HistoryEntry[]): Promise<void> {
7070 await store.save();
7171 } catch {
7272 try {
73 localStorage.setItem("voxlen_history", JSON.stringify(entries));
73 localStorage.setItem("marcoreid_history", JSON.stringify(entries));
7474 } catch {
7575 // Ignore
7676 }
Modifiedsrc/stores/settings.ts+1−1View fileUnifiedSplit
@@ -164,7 +164,7 @@ function schedulePersist() {
164164 await store.save();
165165 } catch {
166166 try {
167 localStorage.setItem("voxlen_settings", JSON.stringify(toSave));
167 localStorage.setItem("marcoreid_settings", JSON.stringify(toSave));
168168 } catch {
169169 // Ignore
170170 }
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts