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,451 @@
|
|
|
1
|
+
# Export Formats
|
|
2
|
+
|
|
3
|
+
markupr supports multiple export formats to suit different use cases. This guide covers each format in detail.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Overview](#overview)
|
|
8
|
+
- [Markdown Format](#markdown-format)
|
|
9
|
+
- [PDF Format](#pdf-format)
|
|
10
|
+
- [HTML Format](#html-format)
|
|
11
|
+
- [JSON Format](#json-format)
|
|
12
|
+
- [Export Options](#export-options)
|
|
13
|
+
- [Best Practices](#best-practices)
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
| Format | Best For | File Size | Images |
|
|
18
|
+
|--------|----------|-----------|--------|
|
|
19
|
+
| Markdown | AI assistants, GitHub, documentation | Small | Referenced |
|
|
20
|
+
| PDF | Sharing, printing, archival | Large | Embedded |
|
|
21
|
+
| HTML | Web viewing, email | Medium | Embedded (base64) |
|
|
22
|
+
| JSON | APIs, integrations, automation | Small | Referenced |
|
|
23
|
+
|
|
24
|
+
## Markdown Format
|
|
25
|
+
|
|
26
|
+
The Markdown format is optimized for AI coding assistants and follows conventions inspired by [llms.txt](https://llms.txt).
|
|
27
|
+
|
|
28
|
+
### Structure
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Feedback Report: {Project Name}
|
|
32
|
+
|
|
33
|
+
> Generated by markupr v0.4.0
|
|
34
|
+
> Date: 2026-02-02 10:30:00
|
|
35
|
+
|
|
36
|
+
## Summary
|
|
37
|
+
|
|
38
|
+
| Metric | Value |
|
|
39
|
+
|--------|-------|
|
|
40
|
+
| Duration | 2m 34s |
|
|
41
|
+
| Feedback Items | 5 |
|
|
42
|
+
| Screenshots | 3 |
|
|
43
|
+
| Source | My App - Chrome |
|
|
44
|
+
|
|
45
|
+
## Feedback Items
|
|
46
|
+
|
|
47
|
+
### FB-001: Login button not visible on mobile
|
|
48
|
+
|
|
49
|
+
**Timestamp**: 00:15 | **Type**: Bug | **Confidence**: 95%
|
|
50
|
+
|
|
51
|
+
> The login button appears to be hidden behind the sticky header when viewing
|
|
52
|
+
> on mobile viewport. Users cannot access the login functionality without
|
|
53
|
+
> scrolling, which is not intuitive.
|
|
54
|
+
|
|
55
|
+
**Screenshot**: [FB-001.png](./screenshots/FB-001.png)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### FB-002: Consider adding social login options
|
|
60
|
+
|
|
61
|
+
**Timestamp**: 00:45 | **Type**: Feature | **Confidence**: 92%
|
|
62
|
+
|
|
63
|
+
> It would be helpful to have social login options like Google or GitHub
|
|
64
|
+
> authentication. This is a common pattern that users expect.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### FB-003: Form validation errors unclear
|
|
69
|
+
|
|
70
|
+
**Timestamp**: 01:12 | **Type**: UX | **Confidence**: 89%
|
|
71
|
+
|
|
72
|
+
> When I enter an invalid email, the error message just says "Invalid input".
|
|
73
|
+
> It should specifically say "Please enter a valid email address" with
|
|
74
|
+
> guidance on the expected format.
|
|
75
|
+
|
|
76
|
+
**Screenshot**: [FB-003.png](./screenshots/FB-003.png)
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Technical Details
|
|
81
|
+
|
|
82
|
+
- **App Version**: 0.4.0
|
|
83
|
+
- **Platform**: darwin (macOS)
|
|
84
|
+
- **Transcription**: OpenAI Nova-2
|
|
85
|
+
- **Session ID**: session-abc123
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Image Handling
|
|
89
|
+
|
|
90
|
+
By default, images are stored as separate files and referenced:
|
|
91
|
+
```markdown
|
|
92
|
+
**Screenshot**: [FB-001.png](./screenshots/FB-001.png)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
With "Include Images" enabled, images are embedded as base64:
|
|
96
|
+
```markdown
|
|
97
|
+
**Screenshot**: 
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Metadata Block
|
|
101
|
+
|
|
102
|
+
The Markdown includes a YAML frontmatter block (hidden in rendered view):
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
---
|
|
106
|
+
markupr_version: 0.4.0
|
|
107
|
+
session_id: session-abc123
|
|
108
|
+
created: 2026-02-02T10:30:00Z
|
|
109
|
+
source: My App - Chrome
|
|
110
|
+
items: 5
|
|
111
|
+
screenshots: 3
|
|
112
|
+
---
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Use Cases
|
|
116
|
+
|
|
117
|
+
- **Claude, ChatGPT, Cursor**: Paste directly for AI analysis
|
|
118
|
+
- **GitHub Issues**: Copy into issue descriptions
|
|
119
|
+
- **Documentation**: Include in project docs
|
|
120
|
+
- **Notes**: Add to Notion, Obsidian, etc.
|
|
121
|
+
|
|
122
|
+
## PDF Format
|
|
123
|
+
|
|
124
|
+
Professional document format for sharing and archival.
|
|
125
|
+
|
|
126
|
+
### Features
|
|
127
|
+
|
|
128
|
+
- **Embedded screenshots**: All images included in the PDF
|
|
129
|
+
- **Print-ready**: Proper margins and page breaks
|
|
130
|
+
- **Themes**: Dark or light mode
|
|
131
|
+
- **Typography**: Professional fonts
|
|
132
|
+
|
|
133
|
+
### Layout
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
┌──────────────────────────────────────────┐
|
|
137
|
+
│ markupr │
|
|
138
|
+
│ Feedback Report │
|
|
139
|
+
│ │
|
|
140
|
+
│ Project: My App │
|
|
141
|
+
│ Date: February 2, 2026 │
|
|
142
|
+
│ Items: 5 feedback points │
|
|
143
|
+
├──────────────────────────────────────────┤
|
|
144
|
+
│ │
|
|
145
|
+
│ 1. Login button not visible │
|
|
146
|
+
│ ┌────────────────────────┐ │
|
|
147
|
+
│ │ [Screenshot] │ │
|
|
148
|
+
│ └────────────────────────┘ │
|
|
149
|
+
│ │
|
|
150
|
+
│ The login button appears to be... │
|
|
151
|
+
│ │
|
|
152
|
+
│ Type: Bug | Confidence: 95% │
|
|
153
|
+
│ │
|
|
154
|
+
├──────────────────────────────────────────┤
|
|
155
|
+
│ 2. Consider adding social login... │
|
|
156
|
+
│ ... │
|
|
157
|
+
└──────────────────────────────────────────┘
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Theme Options
|
|
161
|
+
|
|
162
|
+
**Dark Theme**:
|
|
163
|
+
- Dark background (#0f172a)
|
|
164
|
+
- Light text (#f8fafc)
|
|
165
|
+
- Blue accents (#3b82f6)
|
|
166
|
+
- Best for screen viewing
|
|
167
|
+
|
|
168
|
+
**Light Theme**:
|
|
169
|
+
- White background
|
|
170
|
+
- Dark text (#1e293b)
|
|
171
|
+
- Blue accents (#2563eb)
|
|
172
|
+
- Best for printing
|
|
173
|
+
|
|
174
|
+
### Use Cases
|
|
175
|
+
|
|
176
|
+
- **Client presentations**: Professional appearance
|
|
177
|
+
- **Stakeholder reports**: Print-friendly
|
|
178
|
+
- **Archival**: Long-term storage
|
|
179
|
+
- **Email attachments**: Universal compatibility
|
|
180
|
+
|
|
181
|
+
## HTML Format
|
|
182
|
+
|
|
183
|
+
Self-contained web page with no external dependencies.
|
|
184
|
+
|
|
185
|
+
### Features
|
|
186
|
+
|
|
187
|
+
- **No dependencies**: Single HTML file, works offline
|
|
188
|
+
- **Responsive**: Mobile-friendly layout
|
|
189
|
+
- **Interactive**: Theme toggle, expandable items
|
|
190
|
+
- **Embedded images**: Base64-encoded screenshots
|
|
191
|
+
|
|
192
|
+
### Structure
|
|
193
|
+
|
|
194
|
+
```html
|
|
195
|
+
<!DOCTYPE html>
|
|
196
|
+
<html lang="en">
|
|
197
|
+
<head>
|
|
198
|
+
<meta charset="UTF-8">
|
|
199
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
200
|
+
<title>Feedback Report: My App</title>
|
|
201
|
+
<style>
|
|
202
|
+
/* All CSS embedded - supports dark/light themes */
|
|
203
|
+
</style>
|
|
204
|
+
</head>
|
|
205
|
+
<body>
|
|
206
|
+
<header>
|
|
207
|
+
<h1>Feedback Report: My App</h1>
|
|
208
|
+
<div class="metadata">...</div>
|
|
209
|
+
<button id="theme-toggle">Toggle Theme</button>
|
|
210
|
+
</header>
|
|
211
|
+
|
|
212
|
+
<main>
|
|
213
|
+
<section class="summary">
|
|
214
|
+
<table>...</table>
|
|
215
|
+
</section>
|
|
216
|
+
|
|
217
|
+
<section class="feedback-items">
|
|
218
|
+
<article class="feedback-item">
|
|
219
|
+
<h2>FB-001: Login button not visible</h2>
|
|
220
|
+
<div class="meta">Bug | 95% confidence | 00:15</div>
|
|
221
|
+
<img src="data:image/png;base64,..." alt="Screenshot">
|
|
222
|
+
<blockquote>The login button appears to be...</blockquote>
|
|
223
|
+
</article>
|
|
224
|
+
<!-- More items... -->
|
|
225
|
+
</section>
|
|
226
|
+
</main>
|
|
227
|
+
|
|
228
|
+
<footer>
|
|
229
|
+
Generated by markupr v0.4.0
|
|
230
|
+
</footer>
|
|
231
|
+
|
|
232
|
+
<script>
|
|
233
|
+
/* Theme toggle and interactivity */
|
|
234
|
+
</script>
|
|
235
|
+
</body>
|
|
236
|
+
</html>
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Interactive Features
|
|
240
|
+
|
|
241
|
+
- **Theme Toggle**: Switch between dark and light modes
|
|
242
|
+
- **Collapsible Items**: Expand/collapse feedback items
|
|
243
|
+
- **Image Zoom**: Click to enlarge screenshots
|
|
244
|
+
- **Copy Button**: Copy individual items as text
|
|
245
|
+
|
|
246
|
+
### Use Cases
|
|
247
|
+
|
|
248
|
+
- **Web sharing**: Host on any web server
|
|
249
|
+
- **Email**: Attach as HTML or inline
|
|
250
|
+
- **Local viewing**: Double-click to open in browser
|
|
251
|
+
- **Collaboration**: Share via Slack, Discord, etc.
|
|
252
|
+
|
|
253
|
+
## JSON Format
|
|
254
|
+
|
|
255
|
+
Machine-readable format for integrations and automation.
|
|
256
|
+
|
|
257
|
+
### Schema
|
|
258
|
+
|
|
259
|
+
```json
|
|
260
|
+
{
|
|
261
|
+
"$schema": "https://markupr.app/schemas/export-v1.json",
|
|
262
|
+
"version": "1.0",
|
|
263
|
+
"generator": {
|
|
264
|
+
"name": "markupr",
|
|
265
|
+
"version": "0.4.0"
|
|
266
|
+
},
|
|
267
|
+
"session": {
|
|
268
|
+
"id": "session-abc123",
|
|
269
|
+
"startTime": 1706871000000,
|
|
270
|
+
"endTime": 1706871154000,
|
|
271
|
+
"duration": 154000,
|
|
272
|
+
"source": {
|
|
273
|
+
"id": "window:123:456",
|
|
274
|
+
"name": "My App - Chrome",
|
|
275
|
+
"type": "window"
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"summary": {
|
|
279
|
+
"itemCount": 5,
|
|
280
|
+
"screenshotCount": 3,
|
|
281
|
+
"categories": {
|
|
282
|
+
"bug": 2,
|
|
283
|
+
"feature": 1,
|
|
284
|
+
"ux": 2
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"feedbackItems": [
|
|
288
|
+
{
|
|
289
|
+
"id": "FB-001",
|
|
290
|
+
"index": 1,
|
|
291
|
+
"timestamp": 1706871015000,
|
|
292
|
+
"relativeTime": 15000,
|
|
293
|
+
"transcription": "The login button appears to be hidden...",
|
|
294
|
+
"category": "bug",
|
|
295
|
+
"confidence": 0.95,
|
|
296
|
+
"wordCount": 24,
|
|
297
|
+
"screenshot": {
|
|
298
|
+
"id": "screenshot-001",
|
|
299
|
+
"filename": "FB-001.png",
|
|
300
|
+
"path": "./screenshots/FB-001.png",
|
|
301
|
+
"width": 1920,
|
|
302
|
+
"height": 1080,
|
|
303
|
+
"format": "png",
|
|
304
|
+
"size": 245678
|
|
305
|
+
},
|
|
306
|
+
"annotations": [
|
|
307
|
+
{
|
|
308
|
+
"type": "arrow",
|
|
309
|
+
"x1": 100,
|
|
310
|
+
"y1": 50,
|
|
311
|
+
"x2": 200,
|
|
312
|
+
"y2": 100,
|
|
313
|
+
"color": "#ef4444"
|
|
314
|
+
}
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
],
|
|
318
|
+
"metadata": {
|
|
319
|
+
"platform": "darwin",
|
|
320
|
+
"transcriptionService": "openai",
|
|
321
|
+
"transcriptionModel": "nova-2",
|
|
322
|
+
"exportedAt": "2026-02-02T10:35:00.000Z"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Field Reference
|
|
328
|
+
|
|
329
|
+
#### Session Object
|
|
330
|
+
|
|
331
|
+
| Field | Type | Description |
|
|
332
|
+
|-------|------|-------------|
|
|
333
|
+
| `id` | string | Unique session identifier |
|
|
334
|
+
| `startTime` | number | Unix timestamp (ms) of session start |
|
|
335
|
+
| `endTime` | number | Unix timestamp (ms) of session end |
|
|
336
|
+
| `duration` | number | Duration in milliseconds |
|
|
337
|
+
| `source.id` | string | Capture source ID |
|
|
338
|
+
| `source.name` | string | Human-readable source name |
|
|
339
|
+
| `source.type` | string | "screen" or "window" |
|
|
340
|
+
|
|
341
|
+
#### Feedback Item Object
|
|
342
|
+
|
|
343
|
+
| Field | Type | Description |
|
|
344
|
+
|-------|------|-------------|
|
|
345
|
+
| `id` | string | Item ID (e.g., "FB-001") |
|
|
346
|
+
| `index` | number | 1-based index |
|
|
347
|
+
| `timestamp` | number | Unix timestamp (ms) |
|
|
348
|
+
| `relativeTime` | number | Time since session start (ms) |
|
|
349
|
+
| `transcription` | string | Full transcription text |
|
|
350
|
+
| `category` | string | Auto-detected category |
|
|
351
|
+
| `confidence` | number | Transcription confidence (0-1) |
|
|
352
|
+
| `screenshot` | object | Screenshot metadata (if captured) |
|
|
353
|
+
| `annotations` | array | Drawing annotations |
|
|
354
|
+
|
|
355
|
+
#### Screenshot Object
|
|
356
|
+
|
|
357
|
+
| Field | Type | Description |
|
|
358
|
+
|-------|------|-------------|
|
|
359
|
+
| `id` | string | Screenshot ID |
|
|
360
|
+
| `filename` | string | Original filename |
|
|
361
|
+
| `path` | string | Relative path to image |
|
|
362
|
+
| `width` | number | Image width in pixels |
|
|
363
|
+
| `height` | number | Image height in pixels |
|
|
364
|
+
| `format` | string | "png" or "jpeg" |
|
|
365
|
+
| `size` | number | File size in bytes |
|
|
366
|
+
|
|
367
|
+
### Use Cases
|
|
368
|
+
|
|
369
|
+
- **API integrations**: Send to issue trackers, project management
|
|
370
|
+
- **Automation**: Process with scripts
|
|
371
|
+
- **Custom tooling**: Build your own viewers/processors
|
|
372
|
+
- **Data analysis**: Aggregate feedback across sessions
|
|
373
|
+
|
|
374
|
+
### Parsing Example (JavaScript)
|
|
375
|
+
|
|
376
|
+
```javascript
|
|
377
|
+
const fs = require('fs');
|
|
378
|
+
|
|
379
|
+
const data = JSON.parse(fs.readFileSync('feedback.json', 'utf8'));
|
|
380
|
+
|
|
381
|
+
// Get all bugs
|
|
382
|
+
const bugs = data.feedbackItems.filter(item => item.category === 'bug');
|
|
383
|
+
|
|
384
|
+
// Calculate average confidence
|
|
385
|
+
const avgConfidence = data.feedbackItems.reduce(
|
|
386
|
+
(sum, item) => sum + item.confidence, 0
|
|
387
|
+
) / data.feedbackItems.length;
|
|
388
|
+
|
|
389
|
+
// Get items with screenshots
|
|
390
|
+
const withScreenshots = data.feedbackItems.filter(item => item.screenshot);
|
|
391
|
+
|
|
392
|
+
console.log(`Bugs: ${bugs.length}`);
|
|
393
|
+
console.log(`Average confidence: ${(avgConfidence * 100).toFixed(1)}%`);
|
|
394
|
+
console.log(`Items with screenshots: ${withScreenshots.length}`);
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Export Options
|
|
398
|
+
|
|
399
|
+
### Include Images
|
|
400
|
+
|
|
401
|
+
**Available for**: Markdown, PDF, HTML
|
|
402
|
+
|
|
403
|
+
- **On**: Images are embedded in the export file
|
|
404
|
+
- **Off**: Images are referenced by path (Markdown) or not included (PDF/HTML)
|
|
405
|
+
|
|
406
|
+
**Trade-offs**:
|
|
407
|
+
- Embedded: Larger file size, but self-contained
|
|
408
|
+
- Referenced: Smaller file, but requires separate image folder
|
|
409
|
+
|
|
410
|
+
### Theme
|
|
411
|
+
|
|
412
|
+
**Available for**: PDF, HTML
|
|
413
|
+
|
|
414
|
+
- **Dark**: Dark background, light text
|
|
415
|
+
- **Light**: Light background, dark text
|
|
416
|
+
|
|
417
|
+
### Project Name
|
|
418
|
+
|
|
419
|
+
Customize the title that appears in the export:
|
|
420
|
+
- Default: Captured source name (e.g., "My App - Chrome")
|
|
421
|
+
- Custom: Enter any project name
|
|
422
|
+
|
|
423
|
+
## Best Practices
|
|
424
|
+
|
|
425
|
+
### For AI Assistants
|
|
426
|
+
|
|
427
|
+
1. Use **Markdown** format
|
|
428
|
+
2. Enable **Include Images** (some assistants support image analysis)
|
|
429
|
+
3. Review and edit transcriptions before export
|
|
430
|
+
4. Remove irrelevant items
|
|
431
|
+
|
|
432
|
+
### For Sharing with Team
|
|
433
|
+
|
|
434
|
+
1. Use **PDF** for formal reports
|
|
435
|
+
2. Use **HTML** for interactive viewing
|
|
436
|
+
3. Choose **Light theme** for printing
|
|
437
|
+
4. Add project context in the name
|
|
438
|
+
|
|
439
|
+
### For Integrations
|
|
440
|
+
|
|
441
|
+
1. Use **JSON** format
|
|
442
|
+
2. Parse with appropriate library
|
|
443
|
+
3. Handle missing fields gracefully
|
|
444
|
+
4. Validate against schema
|
|
445
|
+
|
|
446
|
+
### For Archival
|
|
447
|
+
|
|
448
|
+
1. Use **PDF** for long-term storage
|
|
449
|
+
2. Also export **JSON** for data preservation
|
|
450
|
+
3. Keep original screenshots folder
|
|
451
|
+
4. Document session context externally
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# Getting Started with markupr
|
|
2
|
+
|
|
3
|
+
This guide walks you through setting up markupr for the first time.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [System Requirements](#system-requirements)
|
|
8
|
+
- [Installation](#installation)
|
|
9
|
+
- [First-Time Setup](#first-time-setup)
|
|
10
|
+
- [Obtaining a OpenAI API Key](#obtaining-a-openai-api-key)
|
|
11
|
+
- [Granting Permissions](#granting-permissions)
|
|
12
|
+
- [Your First Recording](#your-first-recording)
|
|
13
|
+
|
|
14
|
+
## System Requirements
|
|
15
|
+
|
|
16
|
+
### macOS
|
|
17
|
+
- macOS 10.15 (Catalina) or later
|
|
18
|
+
- Apple Silicon or Intel processor
|
|
19
|
+
- 4 GB RAM minimum
|
|
20
|
+
- 100 MB disk space
|
|
21
|
+
|
|
22
|
+
### Windows
|
|
23
|
+
- Windows 10 or later
|
|
24
|
+
- x64 processor
|
|
25
|
+
- 4 GB RAM minimum
|
|
26
|
+
- 100 MB disk space
|
|
27
|
+
|
|
28
|
+
### Linux
|
|
29
|
+
- Ubuntu 18.04+ or equivalent
|
|
30
|
+
- x64 processor
|
|
31
|
+
- 4 GB RAM minimum
|
|
32
|
+
- 100 MB disk space
|
|
33
|
+
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
### macOS
|
|
37
|
+
|
|
38
|
+
1. Download the latest `.dmg` file from the [releases page](https://github.com/eddiesanjuan/markupr/releases)
|
|
39
|
+
2. Open the downloaded DMG file
|
|
40
|
+
3. Drag the markupr icon to your Applications folder
|
|
41
|
+
4. Eject the DMG
|
|
42
|
+
5. Open markupr from your Applications folder
|
|
43
|
+
|
|
44
|
+
**Note**: On first launch, macOS may show a security warning. Click "Open" to continue, or go to System Preferences > Security & Privacy to allow the app.
|
|
45
|
+
|
|
46
|
+
### Windows
|
|
47
|
+
|
|
48
|
+
1. Download the latest `.exe` installer from the [releases page](https://github.com/eddiesanjuan/markupr/releases)
|
|
49
|
+
2. Run the installer
|
|
50
|
+
3. Follow the installation wizard
|
|
51
|
+
4. Launch markupr from the Start menu or desktop shortcut
|
|
52
|
+
|
|
53
|
+
### Linux
|
|
54
|
+
|
|
55
|
+
**AppImage:**
|
|
56
|
+
```bash
|
|
57
|
+
# Download the AppImage
|
|
58
|
+
wget https://github.com/eddiesanjuan/markupr/releases/latest/download/markupr.AppImage
|
|
59
|
+
|
|
60
|
+
# Make it executable
|
|
61
|
+
chmod +x markupr.AppImage
|
|
62
|
+
|
|
63
|
+
# Run
|
|
64
|
+
./markupr.AppImage
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Debian/Ubuntu:**
|
|
68
|
+
```bash
|
|
69
|
+
# Download and install
|
|
70
|
+
wget https://github.com/eddiesanjuan/markupr/releases/latest/download/markupr.deb
|
|
71
|
+
sudo dpkg -i markupr.deb
|
|
72
|
+
sudo apt-get install -f # Install dependencies if needed
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## First-Time Setup
|
|
76
|
+
|
|
77
|
+
When you launch markupr for the first time, the onboarding wizard will guide you through:
|
|
78
|
+
|
|
79
|
+
1. **Welcome** - Introduction to markupr
|
|
80
|
+
2. **Permissions** - Granting required system permissions
|
|
81
|
+
3. **API Key** - Configuring your OpenAI API key
|
|
82
|
+
4. **Quick Tour** - Learning the basic workflow
|
|
83
|
+
|
|
84
|
+
You can skip the wizard and configure settings manually, but we recommend completing it.
|
|
85
|
+
|
|
86
|
+
## Obtaining a OpenAI API Key
|
|
87
|
+
|
|
88
|
+
markupr uses OpenAI for real-time speech-to-text transcription. Here's how to get your API key:
|
|
89
|
+
|
|
90
|
+
### Step 1: Create a OpenAI Account
|
|
91
|
+
|
|
92
|
+
1. Go to [platform.openai.com/api-keys](https://platform.openai.com/api-keys)
|
|
93
|
+
2. Click "Sign Up" (or "Sign In" if you have an account)
|
|
94
|
+
3. Complete the registration process
|
|
95
|
+
|
|
96
|
+
### Step 2: Create an API Key
|
|
97
|
+
|
|
98
|
+
1. Once logged in, go to **API Keys** in the left sidebar
|
|
99
|
+
2. Click **Create a New API Key**
|
|
100
|
+
3. Give your key a descriptive name (e.g., "markupr")
|
|
101
|
+
4. Select the following permissions:
|
|
102
|
+
- **Usage** (required for transcription)
|
|
103
|
+
5. Click **Create Key**
|
|
104
|
+
6. **Copy the key immediately** - you won't be able to see it again!
|
|
105
|
+
|
|
106
|
+
### Step 3: Add the Key to markupr
|
|
107
|
+
|
|
108
|
+
1. Open markupr
|
|
109
|
+
2. Go to **Settings** (`Cmd+,` on macOS, `Ctrl+,` on Windows)
|
|
110
|
+
3. Navigate to **Advanced** > **Transcription Service**
|
|
111
|
+
4. Paste your API key in the input field
|
|
112
|
+
5. Click **Test Connection** to verify
|
|
113
|
+
6. You should see "API key verified and saved securely"
|
|
114
|
+
|
|
115
|
+
### OpenAI Free Tier
|
|
116
|
+
|
|
117
|
+
OpenAI offers a generous free tier:
|
|
118
|
+
- **200 hours** of transcription per month
|
|
119
|
+
- **No credit card required** to start
|
|
120
|
+
- Perfect for individual developers
|
|
121
|
+
|
|
122
|
+
For higher volume usage, OpenAI offers paid plans starting at pay-as-you-go pricing.
|
|
123
|
+
|
|
124
|
+
## Granting Permissions
|
|
125
|
+
|
|
126
|
+
markupr requires certain system permissions to function properly.
|
|
127
|
+
|
|
128
|
+
### macOS Permissions
|
|
129
|
+
|
|
130
|
+
#### Microphone Access
|
|
131
|
+
|
|
132
|
+
markupr needs microphone access to capture your voice narration.
|
|
133
|
+
|
|
134
|
+
1. When prompted, click **OK** to allow microphone access
|
|
135
|
+
2. If you denied access, go to:
|
|
136
|
+
- System Preferences > Security & Privacy > Privacy > Microphone
|
|
137
|
+
- Check the box next to markupr
|
|
138
|
+
|
|
139
|
+
#### Screen Recording
|
|
140
|
+
|
|
141
|
+
markupr needs screen recording permission to capture screenshots.
|
|
142
|
+
|
|
143
|
+
1. When prompted, click **Open System Preferences**
|
|
144
|
+
2. Go to Security & Privacy > Privacy > Screen Recording
|
|
145
|
+
3. Check the box next to markupr
|
|
146
|
+
4. **Restart markupr** for the change to take effect
|
|
147
|
+
|
|
148
|
+
#### Accessibility (Optional)
|
|
149
|
+
|
|
150
|
+
For global hotkeys to work in all applications:
|
|
151
|
+
|
|
152
|
+
1. Go to System Preferences > Security & Privacy > Privacy > Accessibility
|
|
153
|
+
2. Click the lock icon and enter your password
|
|
154
|
+
3. Check the box next to markupr
|
|
155
|
+
|
|
156
|
+
### Windows Permissions
|
|
157
|
+
|
|
158
|
+
Windows typically handles permissions automatically. If you encounter issues:
|
|
159
|
+
|
|
160
|
+
1. Right-click on markupr in the Start menu
|
|
161
|
+
2. Select "Run as administrator" (for first run only)
|
|
162
|
+
3. Follow any Windows Security prompts
|
|
163
|
+
|
|
164
|
+
### Linux Permissions
|
|
165
|
+
|
|
166
|
+
Depending on your distribution, you may need to:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Add your user to the audio group for microphone access
|
|
170
|
+
sudo usermod -a -G audio $USER
|
|
171
|
+
|
|
172
|
+
# Log out and log back in for changes to take effect
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Your First Recording
|
|
176
|
+
|
|
177
|
+
Now that everything is set up, let's capture your first feedback!
|
|
178
|
+
|
|
179
|
+
### Step 1: Start Recording
|
|
180
|
+
|
|
181
|
+
Press the global hotkey:
|
|
182
|
+
- **macOS**: `Cmd+Shift+F`
|
|
183
|
+
- **Windows/Linux**: `Ctrl+Shift+F`
|
|
184
|
+
|
|
185
|
+
### Step 2: Select a Source
|
|
186
|
+
|
|
187
|
+
The Window Selector will appear. Choose what to capture:
|
|
188
|
+
- **Entire Screen** - Capture everything on one monitor
|
|
189
|
+
- **Specific Window** - Capture just one application window
|
|
190
|
+
|
|
191
|
+
Click on your selection to start.
|
|
192
|
+
|
|
193
|
+
### Step 3: Narrate Your Feedback
|
|
194
|
+
|
|
195
|
+
Start speaking! Some tips:
|
|
196
|
+
- Speak naturally and clearly
|
|
197
|
+
- Pause briefly when you want a screenshot captured
|
|
198
|
+
- The live transcription preview shows what markupr hears
|
|
199
|
+
|
|
200
|
+
### Step 4: Screenshots
|
|
201
|
+
|
|
202
|
+
markupr captures screenshots automatically when you pause speaking. You can also:
|
|
203
|
+
- Press `Cmd+Shift+S` (or `Ctrl+Shift+S`) to manually capture
|
|
204
|
+
- Watch the screenshot count in the overlay
|
|
205
|
+
|
|
206
|
+
### Step 5: Stop Recording
|
|
207
|
+
|
|
208
|
+
Press the hotkey again (`Cmd+Shift+F` or `Ctrl+Shift+F`) to stop.
|
|
209
|
+
|
|
210
|
+
### Step 6: Review and Export
|
|
211
|
+
|
|
212
|
+
After stopping:
|
|
213
|
+
1. The Session Review panel opens
|
|
214
|
+
2. Review your feedback items
|
|
215
|
+
3. Edit or delete items as needed
|
|
216
|
+
4. Click **Copy to Clipboard** or choose an export format
|
|
217
|
+
|
|
218
|
+
### Step 7: Use Your Feedback
|
|
219
|
+
|
|
220
|
+
Paste the copied feedback into your AI assistant:
|
|
221
|
+
- Claude
|
|
222
|
+
- ChatGPT
|
|
223
|
+
- Cursor
|
|
224
|
+
- GitHub Copilot
|
|
225
|
+
|
|
226
|
+
The Markdown format is optimized for AI consumption.
|
|
227
|
+
|
|
228
|
+
## Next Steps
|
|
229
|
+
|
|
230
|
+
- [Configure settings](CONFIGURATION.md) to customize markupr
|
|
231
|
+
- [Learn keyboard shortcuts](KEYBOARD_SHORTCUTS.md) for efficient workflows
|
|
232
|
+
- [Explore export formats](EXPORT_FORMATS.md) for different use cases
|
|
233
|
+
|
|
234
|
+
## Troubleshooting
|
|
235
|
+
|
|
236
|
+
Having issues? Check our [Troubleshooting Guide](TROUBLESHOOTING.md) for common solutions.
|