markupr 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/review-feedback.md +47 -0
- package/.eslintrc.json +35 -0
- package/.github/CODEOWNERS +16 -0
- package/.github/FUNDING.yml +1 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +56 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +54 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +89 -0
- package/.github/dependabot.yml +70 -0
- package/.github/workflows/ci.yml +184 -0
- package/.github/workflows/deploy-landing.yml +134 -0
- package/.github/workflows/nightly.yml +288 -0
- package/.github/workflows/release.yml +318 -0
- package/CHANGELOG.md +127 -0
- package/CLAUDE.md +137 -0
- package/CODE_OF_CONDUCT.md +9 -0
- package/CONTRIBUTING.md +390 -0
- package/LICENSE +21 -0
- package/PRODUCT_VISION.md +277 -0
- package/README.md +517 -0
- package/SECURITY.md +51 -0
- package/SIGNING_INSTRUCTIONS.md +284 -0
- package/assets/DMG_BACKGROUND_INSTRUCTIONS.md +130 -0
- package/assets/svg-source/dmg-background.svg +70 -0
- package/assets/svg-source/icon.svg +20 -0
- package/assets/svg-source/tray-icon-processing.svg +7 -0
- package/assets/svg-source/tray-icon-recording.svg +7 -0
- package/assets/svg-source/tray-icon.svg +6 -0
- package/assets/tray-complete.png +0 -0
- package/assets/tray-complete@2x.png +0 -0
- package/assets/tray-completeTemplate.png +0 -0
- package/assets/tray-completeTemplate@2x.png +0 -0
- package/assets/tray-error.png +0 -0
- package/assets/tray-error@2x.png +0 -0
- package/assets/tray-errorTemplate.png +0 -0
- package/assets/tray-errorTemplate@2x.png +0 -0
- package/assets/tray-icon-processing.png +0 -0
- package/assets/tray-icon-processing@2x.png +0 -0
- package/assets/tray-icon-processingTemplate.png +0 -0
- package/assets/tray-icon-processingTemplate@2x.png +0 -0
- package/assets/tray-icon-recording.png +0 -0
- package/assets/tray-icon-recording@2x.png +0 -0
- package/assets/tray-icon-recordingTemplate.png +0 -0
- package/assets/tray-icon-recordingTemplate@2x.png +0 -0
- package/assets/tray-icon.png +0 -0
- package/assets/tray-icon@2x.png +0 -0
- package/assets/tray-iconTemplate.png +0 -0
- package/assets/tray-iconTemplate@2x.png +0 -0
- package/assets/tray-idle.png +0 -0
- package/assets/tray-idle@2x.png +0 -0
- package/assets/tray-idleTemplate.png +0 -0
- package/assets/tray-idleTemplate@2x.png +0 -0
- package/assets/tray-processing-0.png +0 -0
- package/assets/tray-processing-0@2x.png +0 -0
- package/assets/tray-processing-0Template.png +0 -0
- package/assets/tray-processing-0Template@2x.png +0 -0
- package/assets/tray-processing-1.png +0 -0
- package/assets/tray-processing-1@2x.png +0 -0
- package/assets/tray-processing-1Template.png +0 -0
- package/assets/tray-processing-1Template@2x.png +0 -0
- package/assets/tray-processing-2.png +0 -0
- package/assets/tray-processing-2@2x.png +0 -0
- package/assets/tray-processing-2Template.png +0 -0
- package/assets/tray-processing-2Template@2x.png +0 -0
- package/assets/tray-processing-3.png +0 -0
- package/assets/tray-processing-3@2x.png +0 -0
- package/assets/tray-processing-3Template.png +0 -0
- package/assets/tray-processing-3Template@2x.png +0 -0
- package/assets/tray-processing.png +0 -0
- package/assets/tray-processing@2x.png +0 -0
- package/assets/tray-processingTemplate.png +0 -0
- package/assets/tray-processingTemplate@2x.png +0 -0
- package/assets/tray-recording.png +0 -0
- package/assets/tray-recording@2x.png +0 -0
- package/assets/tray-recordingTemplate.png +0 -0
- package/assets/tray-recordingTemplate@2x.png +0 -0
- package/build/DMG_BACKGROUND_SPEC.md +50 -0
- package/build/dmg-background.png +0 -0
- package/build/dmg-background@2x.png +0 -0
- package/build/entitlements.mac.inherit.plist +27 -0
- package/build/entitlements.mac.plist +41 -0
- package/build/favicon-16.png +0 -0
- package/build/favicon-180.png +0 -0
- package/build/favicon-192.png +0 -0
- package/build/favicon-32.png +0 -0
- package/build/favicon-48.png +0 -0
- package/build/favicon-512.png +0 -0
- package/build/favicon-64.png +0 -0
- package/build/icon-128.png +0 -0
- package/build/icon-16.png +0 -0
- package/build/icon-24.png +0 -0
- package/build/icon-256.png +0 -0
- package/build/icon-32.png +0 -0
- package/build/icon-48.png +0 -0
- package/build/icon-64.png +0 -0
- package/build/icon.icns +0 -0
- package/build/icon.ico +0 -0
- package/build/icon.iconset/icon_128x128.png +0 -0
- package/build/icon.iconset/icon_128x128@2x.png +0 -0
- package/build/icon.iconset/icon_16x16.png +0 -0
- package/build/icon.iconset/icon_16x16@2x.png +0 -0
- package/build/icon.iconset/icon_256x256.png +0 -0
- package/build/icon.iconset/icon_256x256@2x.png +0 -0
- package/build/icon.iconset/icon_32x32.png +0 -0
- package/build/icon.iconset/icon_32x32@2x.png +0 -0
- package/build/icon.iconset/icon_512x512.png +0 -0
- package/build/icon.iconset/icon_512x512@2x.png +0 -0
- package/build/icon.png +0 -0
- package/build/installer-header.bmp +0 -0
- package/build/installer-header.png +0 -0
- package/build/installer-sidebar.bmp +0 -0
- package/build/installer-sidebar.png +0 -0
- package/build/installer.nsh +45 -0
- package/build/overlay-processing.png +0 -0
- package/build/overlay-recording.png +0 -0
- package/build/toolbar-record.png +0 -0
- package/build/toolbar-screenshot.png +0 -0
- package/build/toolbar-settings.png +0 -0
- package/build/toolbar-stop.png +0 -0
- package/dist/main/index.mjs +12612 -0
- package/dist/preload/index.mjs +907 -0
- package/dist/renderer/assets/index-CCmUjl9K.js +19495 -0
- package/dist/renderer/assets/index-CUqz_Gs6.css +2270 -0
- package/dist/renderer/index.html +27 -0
- package/docs/AI_AGENT_QUICKSTART.md +42 -0
- package/docs/AI_PIPELINE_DESIGN.md +595 -0
- package/docs/API.md +514 -0
- package/docs/ARCHITECTURE.md +460 -0
- package/docs/CONFIGURATION.md +336 -0
- package/docs/DEVELOPMENT.md +508 -0
- package/docs/EXPORT_FORMATS.md +451 -0
- package/docs/GETTING_STARTED.md +236 -0
- package/docs/KEYBOARD_SHORTCUTS.md +334 -0
- package/docs/TROUBLESHOOTING.md +418 -0
- package/docs/landing/index.html +672 -0
- package/docs/landing/script.js +342 -0
- package/docs/landing/styles.css +1543 -0
- package/electron-builder.yml +140 -0
- package/electron.vite.config.ts +63 -0
- package/package.json +108 -0
- package/railway.json +12 -0
- package/scripts/build.mjs +51 -0
- package/scripts/generate-icons.mjs +314 -0
- package/scripts/generate-installer-images.cjs +253 -0
- package/scripts/generate-tray-icons.mjs +258 -0
- package/scripts/notarize.cjs +180 -0
- package/scripts/one-click-clean-test.sh +147 -0
- package/scripts/postinstall.mjs +36 -0
- package/scripts/setup-markupr.sh +55 -0
- package/setup +17 -0
- package/site/index.html +1835 -0
- package/site/package.json +11 -0
- package/site/railway.json +12 -0
- package/site/server.js +31 -0
- package/src/main/AutoUpdater.ts +392 -0
- package/src/main/CrashRecovery.ts +655 -0
- package/src/main/ErrorHandler.ts +703 -0
- package/src/main/HotkeyManager.ts +399 -0
- package/src/main/MenuManager.ts +529 -0
- package/src/main/PermissionManager.ts +420 -0
- package/src/main/SessionController.ts +1465 -0
- package/src/main/TrayManager.ts +540 -0
- package/src/main/ai/AIPipelineManager.ts +199 -0
- package/src/main/ai/ClaudeAnalyzer.ts +339 -0
- package/src/main/ai/ImageOptimizer.ts +176 -0
- package/src/main/ai/StructuredMarkdownBuilder.ts +379 -0
- package/src/main/ai/index.ts +16 -0
- package/src/main/ai/types.ts +258 -0
- package/src/main/analysis/ClarificationGenerator.ts +385 -0
- package/src/main/analysis/FeedbackAnalyzer.ts +531 -0
- package/src/main/analysis/index.ts +19 -0
- package/src/main/audio/AudioCapture.ts +978 -0
- package/src/main/audio/audioUtils.ts +100 -0
- package/src/main/audio/index.ts +20 -0
- package/src/main/capture/index.ts +1 -0
- package/src/main/index.ts +1693 -0
- package/src/main/ipc/captureHandlers.ts +272 -0
- package/src/main/ipc/index.ts +45 -0
- package/src/main/ipc/outputHandlers.ts +302 -0
- package/src/main/ipc/sessionHandlers.ts +56 -0
- package/src/main/ipc/settingsHandlers.ts +471 -0
- package/src/main/ipc/types.ts +56 -0
- package/src/main/ipc/windowHandlers.ts +277 -0
- package/src/main/output/ClipboardService.ts +369 -0
- package/src/main/output/ExportService.ts +539 -0
- package/src/main/output/FileManager.ts +416 -0
- package/src/main/output/MarkdownGenerator.ts +791 -0
- package/src/main/output/MarkdownPatcher.ts +299 -0
- package/src/main/output/index.ts +186 -0
- package/src/main/output/sessionAdapter.ts +207 -0
- package/src/main/output/templates/html-template.ts +553 -0
- package/src/main/pipeline/FrameExtractor.ts +330 -0
- package/src/main/pipeline/PostProcessor.ts +399 -0
- package/src/main/pipeline/TranscriptAnalyzer.ts +226 -0
- package/src/main/pipeline/index.ts +36 -0
- package/src/main/platform/WindowsTaskbar.ts +600 -0
- package/src/main/platform/index.ts +16 -0
- package/src/main/settings/SettingsManager.ts +730 -0
- package/src/main/settings/index.ts +19 -0
- package/src/main/transcription/ModelDownloadManager.ts +494 -0
- package/src/main/transcription/TierManager.ts +219 -0
- package/src/main/transcription/TranscriptionRecoveryService.ts +340 -0
- package/src/main/transcription/WhisperService.ts +748 -0
- package/src/main/transcription/index.ts +56 -0
- package/src/main/transcription/types.ts +135 -0
- package/src/main/windows/PopoverManager.ts +284 -0
- package/src/main/windows/TaskbarIntegration.ts +452 -0
- package/src/main/windows/index.ts +23 -0
- package/src/preload/index.ts +1047 -0
- package/src/renderer/App.tsx +515 -0
- package/src/renderer/AppWrapper.tsx +28 -0
- package/src/renderer/assets/logo-dark.svg +7 -0
- package/src/renderer/assets/logo.svg +7 -0
- package/src/renderer/audio/AudioCaptureRenderer.ts +454 -0
- package/src/renderer/capture/ScreenRecordingRenderer.ts +492 -0
- package/src/renderer/components/AnnotationOverlay.tsx +836 -0
- package/src/renderer/components/AudioWaveform.tsx +811 -0
- package/src/renderer/components/ClarificationQuestions.tsx +656 -0
- package/src/renderer/components/CountdownTimer.tsx +495 -0
- package/src/renderer/components/CrashRecoveryDialog.tsx +632 -0
- package/src/renderer/components/DonateButton.tsx +127 -0
- package/src/renderer/components/ErrorBoundary.tsx +308 -0
- package/src/renderer/components/ExportDialog.tsx +872 -0
- package/src/renderer/components/HotkeyHint.tsx +261 -0
- package/src/renderer/components/KeyboardShortcuts.tsx +787 -0
- package/src/renderer/components/ModelDownloadDialog.tsx +844 -0
- package/src/renderer/components/Onboarding.tsx +1830 -0
- package/src/renderer/components/ProcessingOverlay.tsx +157 -0
- package/src/renderer/components/RecordingOverlay.tsx +423 -0
- package/src/renderer/components/SessionHistory.tsx +1746 -0
- package/src/renderer/components/SessionReview.tsx +1321 -0
- package/src/renderer/components/SettingsPanel.tsx +217 -0
- package/src/renderer/components/Skeleton.tsx +347 -0
- package/src/renderer/components/StatusIndicator.tsx +86 -0
- package/src/renderer/components/ThemeProvider.tsx +429 -0
- package/src/renderer/components/Tooltip.tsx +370 -0
- package/src/renderer/components/TranscriptionPreview.tsx +183 -0
- package/src/renderer/components/TranscriptionTierSelector.tsx +640 -0
- package/src/renderer/components/UpdateNotification.tsx +377 -0
- package/src/renderer/components/WindowSelector.tsx +947 -0
- package/src/renderer/components/index.ts +99 -0
- package/src/renderer/components/primitives/ApiKeyInput.tsx +98 -0
- package/src/renderer/components/primitives/ColorPicker.tsx +65 -0
- package/src/renderer/components/primitives/DangerButton.tsx +45 -0
- package/src/renderer/components/primitives/DirectoryPicker.tsx +41 -0
- package/src/renderer/components/primitives/Dropdown.tsx +34 -0
- package/src/renderer/components/primitives/KeyRecorder.tsx +117 -0
- package/src/renderer/components/primitives/SettingsSection.tsx +32 -0
- package/src/renderer/components/primitives/Slider.tsx +43 -0
- package/src/renderer/components/primitives/Toggle.tsx +36 -0
- package/src/renderer/components/primitives/index.ts +10 -0
- package/src/renderer/components/settings/AdvancedTab.tsx +174 -0
- package/src/renderer/components/settings/AppearanceTab.tsx +77 -0
- package/src/renderer/components/settings/GeneralTab.tsx +40 -0
- package/src/renderer/components/settings/HotkeysTab.tsx +79 -0
- package/src/renderer/components/settings/RecordingTab.tsx +84 -0
- package/src/renderer/components/settings/index.ts +9 -0
- package/src/renderer/components/settings/settingsStyles.ts +673 -0
- package/src/renderer/components/settings/tabConfig.tsx +85 -0
- package/src/renderer/components/settings/useSettingsPanel.ts +447 -0
- package/src/renderer/contexts/ProcessingContext.tsx +227 -0
- package/src/renderer/contexts/RecordingContext.tsx +683 -0
- package/src/renderer/contexts/UIContext.tsx +326 -0
- package/src/renderer/contexts/index.ts +24 -0
- package/src/renderer/donateMessages.ts +69 -0
- package/src/renderer/hooks/index.ts +75 -0
- package/src/renderer/hooks/useAnimation.tsx +544 -0
- package/src/renderer/hooks/useTheme.ts +313 -0
- package/src/renderer/index.html +26 -0
- package/src/renderer/main.tsx +52 -0
- package/src/renderer/styles/animations.css +1093 -0
- package/src/renderer/styles/app-shell.css +662 -0
- package/src/renderer/styles/globals.css +515 -0
- package/src/renderer/styles/theme.ts +578 -0
- package/src/renderer/types/electron.d.ts +385 -0
- package/src/shared/hotkeys.ts +283 -0
- package/src/shared/types.ts +809 -0
- package/tests/clipboard.test.ts +228 -0
- package/tests/e2e/criticalPaths.test.ts +594 -0
- package/tests/feedbackAnalyzer.test.ts +303 -0
- package/tests/integration/sessionFlow.test.ts +583 -0
- package/tests/markdownGenerator.test.ts +418 -0
- package/tests/output.test.ts +96 -0
- package/tests/setup.ts +486 -0
- package/tests/unit/appIntegration.test.ts +676 -0
- package/tests/unit/appViewState.test.ts +281 -0
- package/tests/unit/audioIpcChannels.test.ts +17 -0
- package/tests/unit/exportService.test.ts +492 -0
- package/tests/unit/hotkeys.test.ts +92 -0
- package/tests/unit/navigationPreload.test.ts +94 -0
- package/tests/unit/onboardingFlow.test.ts +345 -0
- package/tests/unit/permissionManager.test.ts +175 -0
- package/tests/unit/permissionManagerExpanded.test.ts +296 -0
- package/tests/unit/screenRecordingRenderer.test.ts +368 -0
- package/tests/unit/sessionController.test.ts +515 -0
- package/tests/unit/tierManager.test.ts +61 -0
- package/tests/unit/tierManagerExpanded.test.ts +142 -0
- package/tests/unit/transcriptAnalyzer.test.ts +64 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +46 -0
|
@@ -0,0 +1,672 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>markupr - Capture Developer Feedback in Seconds</title>
|
|
7
|
+
<meta name="description" content="Voice narration + intelligent screenshots = AI-ready documentation. The fastest way to capture and share developer feedback.">
|
|
8
|
+
|
|
9
|
+
<!-- Open Graph / Social -->
|
|
10
|
+
<meta property="og:type" content="website">
|
|
11
|
+
<meta property="og:url" content="https://markupr.com/">
|
|
12
|
+
<meta property="og:title" content="markupr - Capture Developer Feedback in Seconds">
|
|
13
|
+
<meta property="og:description" content="Voice narration + intelligent screenshots = AI-ready documentation. The fastest way to capture and share developer feedback.">
|
|
14
|
+
<meta property="og:image" content="https://markupr.com/og-image.png">
|
|
15
|
+
|
|
16
|
+
<!-- Twitter -->
|
|
17
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
18
|
+
<meta name="twitter:url" content="https://markupr.com/">
|
|
19
|
+
<meta name="twitter:title" content="markupr - Capture Developer Feedback in Seconds">
|
|
20
|
+
<meta name="twitter:description" content="Voice narration + intelligent screenshots = AI-ready documentation.">
|
|
21
|
+
<meta name="twitter:image" content="https://markupr.com/og-image.png">
|
|
22
|
+
|
|
23
|
+
<!-- Favicon -->
|
|
24
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🎙️</text></svg>">
|
|
25
|
+
|
|
26
|
+
<!-- Fonts -->
|
|
27
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
28
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
29
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
30
|
+
|
|
31
|
+
<!-- Styles -->
|
|
32
|
+
<link rel="stylesheet" href="styles.css">
|
|
33
|
+
|
|
34
|
+
<!-- Critical CSS inline for fast loading -->
|
|
35
|
+
<style>
|
|
36
|
+
:root {
|
|
37
|
+
--bg-primary: #0F0F1A;
|
|
38
|
+
--bg-secondary: #1A1A2E;
|
|
39
|
+
--bg-tertiary: #16213E;
|
|
40
|
+
--primary: #6366F1;
|
|
41
|
+
--primary-light: #818CF8;
|
|
42
|
+
--secondary: #8B5CF6;
|
|
43
|
+
--accent: #EC4899;
|
|
44
|
+
--accent-light: #F472B6;
|
|
45
|
+
--text-primary: #E2E8F0;
|
|
46
|
+
--text-secondary: #94A3B8;
|
|
47
|
+
--text-muted: #64748B;
|
|
48
|
+
--border: #334155;
|
|
49
|
+
--success: #10B981;
|
|
50
|
+
--warning: #F59E0B;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
* {
|
|
54
|
+
margin: 0;
|
|
55
|
+
padding: 0;
|
|
56
|
+
box-sizing: border-box;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
html {
|
|
60
|
+
scroll-behavior: smooth;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
body {
|
|
64
|
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
65
|
+
background: var(--bg-primary);
|
|
66
|
+
color: var(--text-primary);
|
|
67
|
+
line-height: 1.6;
|
|
68
|
+
overflow-x: hidden;
|
|
69
|
+
}
|
|
70
|
+
</style>
|
|
71
|
+
</head>
|
|
72
|
+
<body>
|
|
73
|
+
<!-- Navigation -->
|
|
74
|
+
<nav class="nav" id="nav">
|
|
75
|
+
<div class="nav-container">
|
|
76
|
+
<a href="#" class="nav-logo">
|
|
77
|
+
<span class="logo-icon">🎙️</span>
|
|
78
|
+
<span class="logo-text">markupr</span>
|
|
79
|
+
</a>
|
|
80
|
+
<div class="nav-links">
|
|
81
|
+
<a href="#features">Features</a>
|
|
82
|
+
<a href="#how-it-works">How It Works</a>
|
|
83
|
+
<a href="#pricing">Pricing</a>
|
|
84
|
+
<a href="#download" class="nav-cta">Download</a>
|
|
85
|
+
</div>
|
|
86
|
+
<button class="nav-mobile-toggle" aria-label="Toggle menu">
|
|
87
|
+
<span></span>
|
|
88
|
+
<span></span>
|
|
89
|
+
<span></span>
|
|
90
|
+
</button>
|
|
91
|
+
</div>
|
|
92
|
+
</nav>
|
|
93
|
+
|
|
94
|
+
<!-- Hero Section -->
|
|
95
|
+
<section class="hero" id="hero">
|
|
96
|
+
<div class="hero-bg">
|
|
97
|
+
<div class="hero-gradient"></div>
|
|
98
|
+
<div class="hero-grid"></div>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="container hero-content">
|
|
101
|
+
<div class="hero-badge">
|
|
102
|
+
<span class="badge-dot"></span>
|
|
103
|
+
<span>Now available for macOS and Windows</span>
|
|
104
|
+
</div>
|
|
105
|
+
<h1 class="hero-title">
|
|
106
|
+
Capture Developer Feedback
|
|
107
|
+
<span class="gradient-text">in Seconds</span>
|
|
108
|
+
</h1>
|
|
109
|
+
<p class="hero-subtitle">
|
|
110
|
+
Voice narration + intelligent screenshots = AI-ready documentation.<br>
|
|
111
|
+
The fastest way to report bugs, review code, and share context.
|
|
112
|
+
</p>
|
|
113
|
+
<div class="hero-ctas">
|
|
114
|
+
<a href="#download" class="btn btn-primary btn-lg">
|
|
115
|
+
<svg class="btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
116
|
+
<path d="M18 10h-4V3H10v7H6l6 7 6-7z"/>
|
|
117
|
+
<path d="M6 21h12"/>
|
|
118
|
+
</svg>
|
|
119
|
+
Download for macOS
|
|
120
|
+
</a>
|
|
121
|
+
<a href="#download" class="btn btn-secondary btn-lg">
|
|
122
|
+
<svg class="btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
123
|
+
<rect x="2" y="3" width="20" height="14" rx="2"/>
|
|
124
|
+
<path d="M8 21h8"/>
|
|
125
|
+
<path d="M12 17v4"/>
|
|
126
|
+
</svg>
|
|
127
|
+
Download for Windows
|
|
128
|
+
</a>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="hero-stats">
|
|
131
|
+
<div class="stat">
|
|
132
|
+
<span class="stat-value">10x</span>
|
|
133
|
+
<span class="stat-label">Faster than typing</span>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="stat-divider"></div>
|
|
136
|
+
<div class="stat">
|
|
137
|
+
<span class="stat-value">98%</span>
|
|
138
|
+
<span class="stat-label">Transcription accuracy</span>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="stat-divider"></div>
|
|
141
|
+
<div class="stat">
|
|
142
|
+
<span class="stat-value"><5s</span>
|
|
143
|
+
<span class="stat-label">To start capturing</span>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="hero-visual">
|
|
148
|
+
<div class="app-window">
|
|
149
|
+
<div class="window-header">
|
|
150
|
+
<div class="window-controls">
|
|
151
|
+
<span class="control close"></span>
|
|
152
|
+
<span class="control minimize"></span>
|
|
153
|
+
<span class="control maximize"></span>
|
|
154
|
+
</div>
|
|
155
|
+
<span class="window-title">markupr</span>
|
|
156
|
+
</div>
|
|
157
|
+
<div class="window-content">
|
|
158
|
+
<div class="app-demo">
|
|
159
|
+
<div class="demo-recording">
|
|
160
|
+
<div class="recording-indicator">
|
|
161
|
+
<span class="recording-dot"></span>
|
|
162
|
+
<span>Recording...</span>
|
|
163
|
+
</div>
|
|
164
|
+
<div class="waveform">
|
|
165
|
+
<span></span><span></span><span></span><span></span><span></span>
|
|
166
|
+
<span></span><span></span><span></span><span></span><span></span>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
<div class="demo-transcript">
|
|
170
|
+
<p class="transcript-line typing">"There's a bug in the login form where the password field doesn't clear after a failed attempt..."</p>
|
|
171
|
+
</div>
|
|
172
|
+
<div class="demo-screenshots">
|
|
173
|
+
<div class="screenshot-item">
|
|
174
|
+
<div class="screenshot-thumb"></div>
|
|
175
|
+
<span class="screenshot-time">0:03</span>
|
|
176
|
+
</div>
|
|
177
|
+
<div class="screenshot-item">
|
|
178
|
+
<div class="screenshot-thumb"></div>
|
|
179
|
+
<span class="screenshot-time">0:08</span>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="screenshot-item active">
|
|
182
|
+
<div class="screenshot-thumb"></div>
|
|
183
|
+
<span class="screenshot-time">0:12</span>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
</section>
|
|
191
|
+
|
|
192
|
+
<!-- Features Section -->
|
|
193
|
+
<section class="features" id="features">
|
|
194
|
+
<div class="container">
|
|
195
|
+
<div class="section-header">
|
|
196
|
+
<span class="section-tag">Features</span>
|
|
197
|
+
<h2 class="section-title">Everything you need to capture feedback</h2>
|
|
198
|
+
<p class="section-subtitle">Built for developers who value speed and clarity</p>
|
|
199
|
+
</div>
|
|
200
|
+
<div class="features-grid">
|
|
201
|
+
<div class="feature-card" data-aos="fade-up">
|
|
202
|
+
<div class="feature-icon">
|
|
203
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
204
|
+
<path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/>
|
|
205
|
+
<path d="M19 10v2a7 7 0 0 1-14 0v-2"/>
|
|
206
|
+
<line x1="12" y1="19" x2="12" y2="22"/>
|
|
207
|
+
</svg>
|
|
208
|
+
</div>
|
|
209
|
+
<h3 class="feature-title">Voice Narration</h3>
|
|
210
|
+
<p class="feature-desc">Speak naturally while testing. OpenAI transcribes in real-time with 98% accuracy.</p>
|
|
211
|
+
</div>
|
|
212
|
+
<div class="feature-card" data-aos="fade-up" data-aos-delay="100">
|
|
213
|
+
<div class="feature-icon">
|
|
214
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
215
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
216
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
217
|
+
<path d="m21 15-5-5L5 21"/>
|
|
218
|
+
</svg>
|
|
219
|
+
</div>
|
|
220
|
+
<h3 class="feature-title">Intelligent Screenshots</h3>
|
|
221
|
+
<p class="feature-desc">Screenshots auto-capture on voice pauses - no manual triggering needed.</p>
|
|
222
|
+
</div>
|
|
223
|
+
<div class="feature-card" data-aos="fade-up" data-aos-delay="200">
|
|
224
|
+
<div class="feature-icon">
|
|
225
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
226
|
+
<path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/>
|
|
227
|
+
<polyline points="14 2 14 8 20 8"/>
|
|
228
|
+
<path d="M8 13h2"/>
|
|
229
|
+
<path d="M8 17h2"/>
|
|
230
|
+
<path d="M14 13h2"/>
|
|
231
|
+
<path d="M14 17h2"/>
|
|
232
|
+
</svg>
|
|
233
|
+
</div>
|
|
234
|
+
<h3 class="feature-title">AI-Ready Output</h3>
|
|
235
|
+
<p class="feature-desc">Export to Markdown formatted for LLMs with llms.txt-inspired structure.</p>
|
|
236
|
+
</div>
|
|
237
|
+
<div class="feature-card" data-aos="fade-up" data-aos-delay="300">
|
|
238
|
+
<div class="feature-icon">
|
|
239
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
240
|
+
<path d="M12 20h9"/>
|
|
241
|
+
<path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/>
|
|
242
|
+
</svg>
|
|
243
|
+
</div>
|
|
244
|
+
<h3 class="feature-title">Annotation Tools</h3>
|
|
245
|
+
<p class="feature-desc">Draw, circle, and highlight issues directly on screenshots.</p>
|
|
246
|
+
</div>
|
|
247
|
+
<div class="feature-card" data-aos="fade-up" data-aos-delay="400">
|
|
248
|
+
<div class="feature-icon">
|
|
249
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
250
|
+
<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
|
|
251
|
+
<path d="M3 3v5h5"/>
|
|
252
|
+
<path d="M12 7v5l4 2"/>
|
|
253
|
+
</svg>
|
|
254
|
+
</div>
|
|
255
|
+
<h3 class="feature-title">Session History</h3>
|
|
256
|
+
<p class="feature-desc">Browse, search, and re-export past feedback sessions anytime.</p>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="feature-card" data-aos="fade-up" data-aos-delay="500">
|
|
259
|
+
<div class="feature-icon">
|
|
260
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
261
|
+
<rect x="2" y="3" width="20" height="14" rx="2"/>
|
|
262
|
+
<path d="M8 21h8"/>
|
|
263
|
+
<path d="M12 17v4"/>
|
|
264
|
+
<path d="M7 8h.01"/>
|
|
265
|
+
<path d="M17 8h.01"/>
|
|
266
|
+
<path d="M12 8h.01"/>
|
|
267
|
+
</svg>
|
|
268
|
+
</div>
|
|
269
|
+
<h3 class="feature-title">Cross-Platform</h3>
|
|
270
|
+
<p class="feature-desc">Available for macOS and Windows with native performance.</p>
|
|
271
|
+
</div>
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
</section>
|
|
275
|
+
|
|
276
|
+
<!-- How It Works Section -->
|
|
277
|
+
<section class="how-it-works" id="how-it-works">
|
|
278
|
+
<div class="container">
|
|
279
|
+
<div class="section-header">
|
|
280
|
+
<span class="section-tag">How It Works</span>
|
|
281
|
+
<h2 class="section-title">From testing to report in 3 steps</h2>
|
|
282
|
+
<p class="section-subtitle">Record, mark, and ship an AI-ready report in under a minute.</p>
|
|
283
|
+
</div>
|
|
284
|
+
<div class="steps-container">
|
|
285
|
+
<div class="step" data-aos="fade-right">
|
|
286
|
+
<div class="step-number">1</div>
|
|
287
|
+
<div class="step-content">
|
|
288
|
+
<h3 class="step-title">Record and Narrate</h3>
|
|
289
|
+
<p class="step-desc">Press <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd> to begin, then talk through what you see while testing.</p>
|
|
290
|
+
<div class="step-visual">
|
|
291
|
+
<div class="keyboard-shortcut">
|
|
292
|
+
<span class="key">⌘</span>
|
|
293
|
+
<span class="plus">+</span>
|
|
294
|
+
<span class="key">⇧</span>
|
|
295
|
+
<span class="plus">+</span>
|
|
296
|
+
<span class="key">F</span>
|
|
297
|
+
</div>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
<div class="step" data-aos="fade-left">
|
|
302
|
+
<div class="step-number">2</div>
|
|
303
|
+
<div class="step-content">
|
|
304
|
+
<h3 class="step-title">Mark Shots as Needed</h3>
|
|
305
|
+
<p class="step-desc">Manual shot markers confirm instantly while you narrate. After you stop, AI analyzes transcript + frames together.</p>
|
|
306
|
+
<div class="step-visual">
|
|
307
|
+
<div class="narration-demo">
|
|
308
|
+
<div class="voice-wave">
|
|
309
|
+
<span></span><span></span><span></span><span></span><span></span>
|
|
310
|
+
</div>
|
|
311
|
+
<span class="camera-flash">📸</span>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
<div class="step" data-aos="fade-right">
|
|
317
|
+
<div class="step-number">3</div>
|
|
318
|
+
<div class="step-content">
|
|
319
|
+
<h3 class="step-title">Share the Report</h3>
|
|
320
|
+
<p class="step-desc">Export Markdown/PDF and paste a clean, structured report into GitHub, Linear, Slack, or your AI coding assistant.</p>
|
|
321
|
+
<div class="step-visual">
|
|
322
|
+
<div class="export-options">
|
|
323
|
+
<span class="export-badge">MD</span>
|
|
324
|
+
<span class="export-badge">PDF</span>
|
|
325
|
+
<span class="export-badge">📋</span>
|
|
326
|
+
</div>
|
|
327
|
+
</div>
|
|
328
|
+
</div>
|
|
329
|
+
</div>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</section>
|
|
333
|
+
|
|
334
|
+
<!-- Demo Section -->
|
|
335
|
+
<section class="demo" id="demo">
|
|
336
|
+
<div class="container">
|
|
337
|
+
<div class="section-header">
|
|
338
|
+
<span class="section-tag">See It In Action</span>
|
|
339
|
+
<h2 class="section-title">Watch markupr in action</h2>
|
|
340
|
+
<p class="section-subtitle">A 2-minute demo of the complete workflow</p>
|
|
341
|
+
</div>
|
|
342
|
+
<div class="demo-container" data-aos="zoom-in">
|
|
343
|
+
<div class="video-wrapper">
|
|
344
|
+
<div class="video-placeholder">
|
|
345
|
+
<div class="play-button">
|
|
346
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
347
|
+
<polygon points="5 3 19 12 5 21 5 3"/>
|
|
348
|
+
</svg>
|
|
349
|
+
</div>
|
|
350
|
+
<span class="video-duration">2:34</span>
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
353
|
+
<div class="demo-gif">
|
|
354
|
+
<div class="gif-placeholder">
|
|
355
|
+
<div class="gif-animation">
|
|
356
|
+
<div class="gif-screen">
|
|
357
|
+
<div class="gif-cursor"></div>
|
|
358
|
+
<div class="gif-recording-bar"></div>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
<span class="gif-label">Animated workflow preview</span>
|
|
362
|
+
</div>
|
|
363
|
+
</div>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
</section>
|
|
367
|
+
|
|
368
|
+
<!-- Testimonials Section -->
|
|
369
|
+
<section class="testimonials" id="testimonials">
|
|
370
|
+
<div class="container">
|
|
371
|
+
<div class="section-header">
|
|
372
|
+
<span class="section-tag">Testimonials</span>
|
|
373
|
+
<h2 class="section-title">Loved by developers</h2>
|
|
374
|
+
<p class="section-subtitle">See what early adopters are saying</p>
|
|
375
|
+
</div>
|
|
376
|
+
<div class="testimonials-grid">
|
|
377
|
+
<div class="testimonial-card" data-aos="fade-up">
|
|
378
|
+
<div class="testimonial-content">
|
|
379
|
+
<div class="quote-icon">"</div>
|
|
380
|
+
<p class="testimonial-text">markupr cut my bug reporting time by 80%. I just talk through what I'm seeing and the screenshots appear automatically. Pure magic.</p>
|
|
381
|
+
</div>
|
|
382
|
+
<div class="testimonial-author">
|
|
383
|
+
<div class="author-avatar">
|
|
384
|
+
<span>SM</span>
|
|
385
|
+
</div>
|
|
386
|
+
<div class="author-info">
|
|
387
|
+
<span class="author-name">Sarah Mitchell</span>
|
|
388
|
+
<span class="author-role">Senior Frontend Developer</span>
|
|
389
|
+
</div>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
<div class="testimonial-card" data-aos="fade-up" data-aos-delay="100">
|
|
393
|
+
<div class="testimonial-content">
|
|
394
|
+
<div class="quote-icon">"</div>
|
|
395
|
+
<p class="testimonial-text">The AI-ready export is a game changer. I paste feedback directly into Claude and get solutions in seconds. This is how feedback should work.</p>
|
|
396
|
+
</div>
|
|
397
|
+
<div class="testimonial-author">
|
|
398
|
+
<div class="author-avatar">
|
|
399
|
+
<span>JK</span>
|
|
400
|
+
</div>
|
|
401
|
+
<div class="author-info">
|
|
402
|
+
<span class="author-name">James Kim</span>
|
|
403
|
+
<span class="author-role">Tech Lead at StartupXYZ</span>
|
|
404
|
+
</div>
|
|
405
|
+
</div>
|
|
406
|
+
</div>
|
|
407
|
+
<div class="testimonial-card" data-aos="fade-up" data-aos-delay="200">
|
|
408
|
+
<div class="testimonial-content">
|
|
409
|
+
<div class="quote-icon">"</div>
|
|
410
|
+
<p class="testimonial-text">Finally, a tool that understands developer workflow. Record, annotate, export - all without breaking my flow. Essential for code reviews.</p>
|
|
411
|
+
</div>
|
|
412
|
+
<div class="testimonial-author">
|
|
413
|
+
<div class="author-avatar">
|
|
414
|
+
<span>AL</span>
|
|
415
|
+
</div>
|
|
416
|
+
<div class="author-info">
|
|
417
|
+
<span class="author-name">Alex Lopez</span>
|
|
418
|
+
<span class="author-role">Full Stack Developer</span>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
</section>
|
|
425
|
+
|
|
426
|
+
<!-- Pricing Section -->
|
|
427
|
+
<section class="pricing" id="pricing">
|
|
428
|
+
<div class="container">
|
|
429
|
+
<div class="section-header">
|
|
430
|
+
<span class="section-tag">Pricing</span>
|
|
431
|
+
<h2 class="section-title">Simple, transparent pricing</h2>
|
|
432
|
+
<p class="section-subtitle">Start free, upgrade when you need more</p>
|
|
433
|
+
</div>
|
|
434
|
+
<div class="pricing-grid">
|
|
435
|
+
<div class="pricing-card" data-aos="fade-up">
|
|
436
|
+
<div class="pricing-header">
|
|
437
|
+
<h3 class="pricing-tier">Free</h3>
|
|
438
|
+
<div class="pricing-price">
|
|
439
|
+
<span class="price-amount">$0</span>
|
|
440
|
+
<span class="price-period">forever</span>
|
|
441
|
+
</div>
|
|
442
|
+
<p class="pricing-desc">Perfect for personal use and trying out markupr</p>
|
|
443
|
+
</div>
|
|
444
|
+
<ul class="pricing-features">
|
|
445
|
+
<li>
|
|
446
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
447
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
448
|
+
</svg>
|
|
449
|
+
5 sessions per day
|
|
450
|
+
</li>
|
|
451
|
+
<li>
|
|
452
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
453
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
454
|
+
</svg>
|
|
455
|
+
Voice transcription
|
|
456
|
+
</li>
|
|
457
|
+
<li>
|
|
458
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
459
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
460
|
+
</svg>
|
|
461
|
+
Auto screenshots
|
|
462
|
+
</li>
|
|
463
|
+
<li>
|
|
464
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
465
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
466
|
+
</svg>
|
|
467
|
+
Basic annotations
|
|
468
|
+
</li>
|
|
469
|
+
<li>
|
|
470
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
471
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
472
|
+
</svg>
|
|
473
|
+
Markdown export
|
|
474
|
+
</li>
|
|
475
|
+
<li>
|
|
476
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
477
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
478
|
+
</svg>
|
|
479
|
+
7-day session history
|
|
480
|
+
</li>
|
|
481
|
+
</ul>
|
|
482
|
+
<a href="#download" class="btn btn-secondary btn-block">Download Free</a>
|
|
483
|
+
</div>
|
|
484
|
+
<div class="pricing-card featured" data-aos="fade-up" data-aos-delay="100">
|
|
485
|
+
<div class="pricing-badge">Most Popular</div>
|
|
486
|
+
<div class="pricing-header">
|
|
487
|
+
<h3 class="pricing-tier">Pro</h3>
|
|
488
|
+
<div class="pricing-price">
|
|
489
|
+
<span class="price-amount">$9</span>
|
|
490
|
+
<span class="price-period">/month</span>
|
|
491
|
+
</div>
|
|
492
|
+
<p class="pricing-desc">For power users who need unlimited feedback capture</p>
|
|
493
|
+
</div>
|
|
494
|
+
<ul class="pricing-features">
|
|
495
|
+
<li>
|
|
496
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
497
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
498
|
+
</svg>
|
|
499
|
+
<strong>Unlimited</strong> sessions
|
|
500
|
+
</li>
|
|
501
|
+
<li>
|
|
502
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
503
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
504
|
+
</svg>
|
|
505
|
+
Priority transcription
|
|
506
|
+
</li>
|
|
507
|
+
<li>
|
|
508
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
509
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
510
|
+
</svg>
|
|
511
|
+
Advanced annotations
|
|
512
|
+
</li>
|
|
513
|
+
<li>
|
|
514
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
515
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
516
|
+
</svg>
|
|
517
|
+
PDF export
|
|
518
|
+
</li>
|
|
519
|
+
<li>
|
|
520
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
521
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
522
|
+
</svg>
|
|
523
|
+
Unlimited history
|
|
524
|
+
</li>
|
|
525
|
+
<li>
|
|
526
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
527
|
+
<polyline points="20 6 9 17 4 12"/>
|
|
528
|
+
</svg>
|
|
529
|
+
<span class="coming-soon">Team sharing <span class="badge">Coming Soon</span></span>
|
|
530
|
+
</li>
|
|
531
|
+
</ul>
|
|
532
|
+
<a href="#download" class="btn btn-primary btn-block">Start Pro Trial</a>
|
|
533
|
+
</div>
|
|
534
|
+
</div>
|
|
535
|
+
</div>
|
|
536
|
+
</section>
|
|
537
|
+
|
|
538
|
+
<!-- Download Section -->
|
|
539
|
+
<section class="download" id="download">
|
|
540
|
+
<div class="container">
|
|
541
|
+
<div class="download-content">
|
|
542
|
+
<div class="section-header">
|
|
543
|
+
<span class="section-tag">Download</span>
|
|
544
|
+
<h2 class="section-title">Ready to capture feedback faster?</h2>
|
|
545
|
+
<p class="section-subtitle">Download markupr and start recording in under a minute</p>
|
|
546
|
+
</div>
|
|
547
|
+
<div class="download-grid">
|
|
548
|
+
<div class="download-card" data-aos="fade-up">
|
|
549
|
+
<div class="download-icon">
|
|
550
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
551
|
+
<path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"/>
|
|
552
|
+
</svg>
|
|
553
|
+
</div>
|
|
554
|
+
<h3 class="download-title">macOS</h3>
|
|
555
|
+
<p class="download-version">Latest Version</p>
|
|
556
|
+
<p class="download-requirements">macOS 12.0 or later<br>Apple Silicon & Intel</p>
|
|
557
|
+
<a href="https://github.com/eddiesanjuan/markupr/releases/latest" class="btn btn-primary btn-block download-btn">
|
|
558
|
+
<svg class="btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
559
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
|
|
560
|
+
<polyline points="7 10 12 15 17 10"/>
|
|
561
|
+
<line x1="12" y1="15" x2="12" y2="3"/>
|
|
562
|
+
</svg>
|
|
563
|
+
Download DMG
|
|
564
|
+
</a>
|
|
565
|
+
</div>
|
|
566
|
+
<div class="download-card" data-aos="fade-up" data-aos-delay="100">
|
|
567
|
+
<div class="download-icon">
|
|
568
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
569
|
+
<path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/>
|
|
570
|
+
</svg>
|
|
571
|
+
</div>
|
|
572
|
+
<h3 class="download-title">Windows</h3>
|
|
573
|
+
<p class="download-version">Latest Version</p>
|
|
574
|
+
<p class="download-requirements">Windows 10/11<br>64-bit required</p>
|
|
575
|
+
<a href="https://github.com/eddiesanjuan/markupr/releases/latest" class="btn btn-primary btn-block download-btn">
|
|
576
|
+
<svg class="btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
577
|
+
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
|
|
578
|
+
<polyline points="7 10 12 15 17 10"/>
|
|
579
|
+
<line x1="12" y1="15" x2="12" y2="3"/>
|
|
580
|
+
</svg>
|
|
581
|
+
Download Installer
|
|
582
|
+
</a>
|
|
583
|
+
</div>
|
|
584
|
+
</div>
|
|
585
|
+
</div>
|
|
586
|
+
</div>
|
|
587
|
+
</section>
|
|
588
|
+
|
|
589
|
+
<!-- CTA Section -->
|
|
590
|
+
<section class="cta">
|
|
591
|
+
<div class="container">
|
|
592
|
+
<div class="cta-content" data-aos="fade-up">
|
|
593
|
+
<h2 class="cta-title">Ready to transform how you capture feedback?</h2>
|
|
594
|
+
<p class="cta-subtitle">Download for free, and if it saves you time, chip in to keep development moving fast.</p>
|
|
595
|
+
<div class="cta-actions">
|
|
596
|
+
<a href="#download" class="btn btn-primary btn-lg">Get Started Free</a>
|
|
597
|
+
<a href="https://ko-fi.com/eddiesanjuan" class="btn btn-secondary btn-lg" target="_blank" rel="noopener noreferrer">Support on Ko-fi</a>
|
|
598
|
+
</div>
|
|
599
|
+
<p class="cta-support-note">Small donations directly fund bug fixes, updates, and new export features.</p>
|
|
600
|
+
</div>
|
|
601
|
+
</div>
|
|
602
|
+
</section>
|
|
603
|
+
|
|
604
|
+
<!-- Footer -->
|
|
605
|
+
<footer class="footer">
|
|
606
|
+
<div class="container">
|
|
607
|
+
<div class="footer-grid">
|
|
608
|
+
<div class="footer-brand">
|
|
609
|
+
<a href="#" class="footer-logo">
|
|
610
|
+
<span class="logo-icon">🎙️</span>
|
|
611
|
+
<span class="logo-text">markupr</span>
|
|
612
|
+
</a>
|
|
613
|
+
<p class="footer-tagline">Capture developer feedback in seconds</p>
|
|
614
|
+
<div class="footer-social">
|
|
615
|
+
<a href="#" class="social-link" aria-label="GitHub">
|
|
616
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
617
|
+
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
|
|
618
|
+
</svg>
|
|
619
|
+
</a>
|
|
620
|
+
<a href="#" class="social-link" aria-label="Twitter">
|
|
621
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
622
|
+
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
|
|
623
|
+
</svg>
|
|
624
|
+
</a>
|
|
625
|
+
<a href="#" class="social-link" aria-label="Discord">
|
|
626
|
+
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
627
|
+
<path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/>
|
|
628
|
+
</svg>
|
|
629
|
+
</a>
|
|
630
|
+
</div>
|
|
631
|
+
</div>
|
|
632
|
+
<div class="footer-links">
|
|
633
|
+
<div class="footer-column">
|
|
634
|
+
<h4 class="footer-heading">Product</h4>
|
|
635
|
+
<ul>
|
|
636
|
+
<li><a href="#features">Features</a></li>
|
|
637
|
+
<li><a href="#pricing">Pricing</a></li>
|
|
638
|
+
<li><a href="#download">Download</a></li>
|
|
639
|
+
<li><a href="#">Changelog</a></li>
|
|
640
|
+
</ul>
|
|
641
|
+
</div>
|
|
642
|
+
<div class="footer-column">
|
|
643
|
+
<h4 class="footer-heading">Resources</h4>
|
|
644
|
+
<ul>
|
|
645
|
+
<li><a href="#">Documentation</a></li>
|
|
646
|
+
<li><a href="#">API Reference</a></li>
|
|
647
|
+
<li><a href="#">Blog</a></li>
|
|
648
|
+
<li><a href="#">Support</a></li>
|
|
649
|
+
</ul>
|
|
650
|
+
</div>
|
|
651
|
+
<div class="footer-column">
|
|
652
|
+
<h4 class="footer-heading">Company</h4>
|
|
653
|
+
<ul>
|
|
654
|
+
<li><a href="#">About</a></li>
|
|
655
|
+
<li><a href="#">Privacy</a></li>
|
|
656
|
+
<li><a href="#">Terms</a></li>
|
|
657
|
+
<li><a href="#">Contact</a></li>
|
|
658
|
+
</ul>
|
|
659
|
+
</div>
|
|
660
|
+
</div>
|
|
661
|
+
</div>
|
|
662
|
+
<div class="footer-bottom">
|
|
663
|
+
<p>© 2026 markupr. All rights reserved.</p>
|
|
664
|
+
<p class="footer-made">Made with 🎙️ for developers everywhere</p>
|
|
665
|
+
</div>
|
|
666
|
+
</div>
|
|
667
|
+
</footer>
|
|
668
|
+
|
|
669
|
+
<!-- Scripts -->
|
|
670
|
+
<script src="script.js"></script>
|
|
671
|
+
</body>
|
|
672
|
+
</html>
|