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.
Files changed (299) hide show
  1. package/.claude/commands/review-feedback.md +47 -0
  2. package/.eslintrc.json +35 -0
  3. package/.github/CODEOWNERS +16 -0
  4. package/.github/FUNDING.yml +1 -0
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +56 -0
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +54 -0
  7. package/.github/PULL_REQUEST_TEMPLATE.md +89 -0
  8. package/.github/dependabot.yml +70 -0
  9. package/.github/workflows/ci.yml +184 -0
  10. package/.github/workflows/deploy-landing.yml +134 -0
  11. package/.github/workflows/nightly.yml +288 -0
  12. package/.github/workflows/release.yml +318 -0
  13. package/CHANGELOG.md +127 -0
  14. package/CLAUDE.md +137 -0
  15. package/CODE_OF_CONDUCT.md +9 -0
  16. package/CONTRIBUTING.md +390 -0
  17. package/LICENSE +21 -0
  18. package/PRODUCT_VISION.md +277 -0
  19. package/README.md +517 -0
  20. package/SECURITY.md +51 -0
  21. package/SIGNING_INSTRUCTIONS.md +284 -0
  22. package/assets/DMG_BACKGROUND_INSTRUCTIONS.md +130 -0
  23. package/assets/svg-source/dmg-background.svg +70 -0
  24. package/assets/svg-source/icon.svg +20 -0
  25. package/assets/svg-source/tray-icon-processing.svg +7 -0
  26. package/assets/svg-source/tray-icon-recording.svg +7 -0
  27. package/assets/svg-source/tray-icon.svg +6 -0
  28. package/assets/tray-complete.png +0 -0
  29. package/assets/tray-complete@2x.png +0 -0
  30. package/assets/tray-completeTemplate.png +0 -0
  31. package/assets/tray-completeTemplate@2x.png +0 -0
  32. package/assets/tray-error.png +0 -0
  33. package/assets/tray-error@2x.png +0 -0
  34. package/assets/tray-errorTemplate.png +0 -0
  35. package/assets/tray-errorTemplate@2x.png +0 -0
  36. package/assets/tray-icon-processing.png +0 -0
  37. package/assets/tray-icon-processing@2x.png +0 -0
  38. package/assets/tray-icon-processingTemplate.png +0 -0
  39. package/assets/tray-icon-processingTemplate@2x.png +0 -0
  40. package/assets/tray-icon-recording.png +0 -0
  41. package/assets/tray-icon-recording@2x.png +0 -0
  42. package/assets/tray-icon-recordingTemplate.png +0 -0
  43. package/assets/tray-icon-recordingTemplate@2x.png +0 -0
  44. package/assets/tray-icon.png +0 -0
  45. package/assets/tray-icon@2x.png +0 -0
  46. package/assets/tray-iconTemplate.png +0 -0
  47. package/assets/tray-iconTemplate@2x.png +0 -0
  48. package/assets/tray-idle.png +0 -0
  49. package/assets/tray-idle@2x.png +0 -0
  50. package/assets/tray-idleTemplate.png +0 -0
  51. package/assets/tray-idleTemplate@2x.png +0 -0
  52. package/assets/tray-processing-0.png +0 -0
  53. package/assets/tray-processing-0@2x.png +0 -0
  54. package/assets/tray-processing-0Template.png +0 -0
  55. package/assets/tray-processing-0Template@2x.png +0 -0
  56. package/assets/tray-processing-1.png +0 -0
  57. package/assets/tray-processing-1@2x.png +0 -0
  58. package/assets/tray-processing-1Template.png +0 -0
  59. package/assets/tray-processing-1Template@2x.png +0 -0
  60. package/assets/tray-processing-2.png +0 -0
  61. package/assets/tray-processing-2@2x.png +0 -0
  62. package/assets/tray-processing-2Template.png +0 -0
  63. package/assets/tray-processing-2Template@2x.png +0 -0
  64. package/assets/tray-processing-3.png +0 -0
  65. package/assets/tray-processing-3@2x.png +0 -0
  66. package/assets/tray-processing-3Template.png +0 -0
  67. package/assets/tray-processing-3Template@2x.png +0 -0
  68. package/assets/tray-processing.png +0 -0
  69. package/assets/tray-processing@2x.png +0 -0
  70. package/assets/tray-processingTemplate.png +0 -0
  71. package/assets/tray-processingTemplate@2x.png +0 -0
  72. package/assets/tray-recording.png +0 -0
  73. package/assets/tray-recording@2x.png +0 -0
  74. package/assets/tray-recordingTemplate.png +0 -0
  75. package/assets/tray-recordingTemplate@2x.png +0 -0
  76. package/build/DMG_BACKGROUND_SPEC.md +50 -0
  77. package/build/dmg-background.png +0 -0
  78. package/build/dmg-background@2x.png +0 -0
  79. package/build/entitlements.mac.inherit.plist +27 -0
  80. package/build/entitlements.mac.plist +41 -0
  81. package/build/favicon-16.png +0 -0
  82. package/build/favicon-180.png +0 -0
  83. package/build/favicon-192.png +0 -0
  84. package/build/favicon-32.png +0 -0
  85. package/build/favicon-48.png +0 -0
  86. package/build/favicon-512.png +0 -0
  87. package/build/favicon-64.png +0 -0
  88. package/build/icon-128.png +0 -0
  89. package/build/icon-16.png +0 -0
  90. package/build/icon-24.png +0 -0
  91. package/build/icon-256.png +0 -0
  92. package/build/icon-32.png +0 -0
  93. package/build/icon-48.png +0 -0
  94. package/build/icon-64.png +0 -0
  95. package/build/icon.icns +0 -0
  96. package/build/icon.ico +0 -0
  97. package/build/icon.iconset/icon_128x128.png +0 -0
  98. package/build/icon.iconset/icon_128x128@2x.png +0 -0
  99. package/build/icon.iconset/icon_16x16.png +0 -0
  100. package/build/icon.iconset/icon_16x16@2x.png +0 -0
  101. package/build/icon.iconset/icon_256x256.png +0 -0
  102. package/build/icon.iconset/icon_256x256@2x.png +0 -0
  103. package/build/icon.iconset/icon_32x32.png +0 -0
  104. package/build/icon.iconset/icon_32x32@2x.png +0 -0
  105. package/build/icon.iconset/icon_512x512.png +0 -0
  106. package/build/icon.iconset/icon_512x512@2x.png +0 -0
  107. package/build/icon.png +0 -0
  108. package/build/installer-header.bmp +0 -0
  109. package/build/installer-header.png +0 -0
  110. package/build/installer-sidebar.bmp +0 -0
  111. package/build/installer-sidebar.png +0 -0
  112. package/build/installer.nsh +45 -0
  113. package/build/overlay-processing.png +0 -0
  114. package/build/overlay-recording.png +0 -0
  115. package/build/toolbar-record.png +0 -0
  116. package/build/toolbar-screenshot.png +0 -0
  117. package/build/toolbar-settings.png +0 -0
  118. package/build/toolbar-stop.png +0 -0
  119. package/dist/main/index.mjs +12612 -0
  120. package/dist/preload/index.mjs +907 -0
  121. package/dist/renderer/assets/index-CCmUjl9K.js +19495 -0
  122. package/dist/renderer/assets/index-CUqz_Gs6.css +2270 -0
  123. package/dist/renderer/index.html +27 -0
  124. package/docs/AI_AGENT_QUICKSTART.md +42 -0
  125. package/docs/AI_PIPELINE_DESIGN.md +595 -0
  126. package/docs/API.md +514 -0
  127. package/docs/ARCHITECTURE.md +460 -0
  128. package/docs/CONFIGURATION.md +336 -0
  129. package/docs/DEVELOPMENT.md +508 -0
  130. package/docs/EXPORT_FORMATS.md +451 -0
  131. package/docs/GETTING_STARTED.md +236 -0
  132. package/docs/KEYBOARD_SHORTCUTS.md +334 -0
  133. package/docs/TROUBLESHOOTING.md +418 -0
  134. package/docs/landing/index.html +672 -0
  135. package/docs/landing/script.js +342 -0
  136. package/docs/landing/styles.css +1543 -0
  137. package/electron-builder.yml +140 -0
  138. package/electron.vite.config.ts +63 -0
  139. package/package.json +108 -0
  140. package/railway.json +12 -0
  141. package/scripts/build.mjs +51 -0
  142. package/scripts/generate-icons.mjs +314 -0
  143. package/scripts/generate-installer-images.cjs +253 -0
  144. package/scripts/generate-tray-icons.mjs +258 -0
  145. package/scripts/notarize.cjs +180 -0
  146. package/scripts/one-click-clean-test.sh +147 -0
  147. package/scripts/postinstall.mjs +36 -0
  148. package/scripts/setup-markupr.sh +55 -0
  149. package/setup +17 -0
  150. package/site/index.html +1835 -0
  151. package/site/package.json +11 -0
  152. package/site/railway.json +12 -0
  153. package/site/server.js +31 -0
  154. package/src/main/AutoUpdater.ts +392 -0
  155. package/src/main/CrashRecovery.ts +655 -0
  156. package/src/main/ErrorHandler.ts +703 -0
  157. package/src/main/HotkeyManager.ts +399 -0
  158. package/src/main/MenuManager.ts +529 -0
  159. package/src/main/PermissionManager.ts +420 -0
  160. package/src/main/SessionController.ts +1465 -0
  161. package/src/main/TrayManager.ts +540 -0
  162. package/src/main/ai/AIPipelineManager.ts +199 -0
  163. package/src/main/ai/ClaudeAnalyzer.ts +339 -0
  164. package/src/main/ai/ImageOptimizer.ts +176 -0
  165. package/src/main/ai/StructuredMarkdownBuilder.ts +379 -0
  166. package/src/main/ai/index.ts +16 -0
  167. package/src/main/ai/types.ts +258 -0
  168. package/src/main/analysis/ClarificationGenerator.ts +385 -0
  169. package/src/main/analysis/FeedbackAnalyzer.ts +531 -0
  170. package/src/main/analysis/index.ts +19 -0
  171. package/src/main/audio/AudioCapture.ts +978 -0
  172. package/src/main/audio/audioUtils.ts +100 -0
  173. package/src/main/audio/index.ts +20 -0
  174. package/src/main/capture/index.ts +1 -0
  175. package/src/main/index.ts +1693 -0
  176. package/src/main/ipc/captureHandlers.ts +272 -0
  177. package/src/main/ipc/index.ts +45 -0
  178. package/src/main/ipc/outputHandlers.ts +302 -0
  179. package/src/main/ipc/sessionHandlers.ts +56 -0
  180. package/src/main/ipc/settingsHandlers.ts +471 -0
  181. package/src/main/ipc/types.ts +56 -0
  182. package/src/main/ipc/windowHandlers.ts +277 -0
  183. package/src/main/output/ClipboardService.ts +369 -0
  184. package/src/main/output/ExportService.ts +539 -0
  185. package/src/main/output/FileManager.ts +416 -0
  186. package/src/main/output/MarkdownGenerator.ts +791 -0
  187. package/src/main/output/MarkdownPatcher.ts +299 -0
  188. package/src/main/output/index.ts +186 -0
  189. package/src/main/output/sessionAdapter.ts +207 -0
  190. package/src/main/output/templates/html-template.ts +553 -0
  191. package/src/main/pipeline/FrameExtractor.ts +330 -0
  192. package/src/main/pipeline/PostProcessor.ts +399 -0
  193. package/src/main/pipeline/TranscriptAnalyzer.ts +226 -0
  194. package/src/main/pipeline/index.ts +36 -0
  195. package/src/main/platform/WindowsTaskbar.ts +600 -0
  196. package/src/main/platform/index.ts +16 -0
  197. package/src/main/settings/SettingsManager.ts +730 -0
  198. package/src/main/settings/index.ts +19 -0
  199. package/src/main/transcription/ModelDownloadManager.ts +494 -0
  200. package/src/main/transcription/TierManager.ts +219 -0
  201. package/src/main/transcription/TranscriptionRecoveryService.ts +340 -0
  202. package/src/main/transcription/WhisperService.ts +748 -0
  203. package/src/main/transcription/index.ts +56 -0
  204. package/src/main/transcription/types.ts +135 -0
  205. package/src/main/windows/PopoverManager.ts +284 -0
  206. package/src/main/windows/TaskbarIntegration.ts +452 -0
  207. package/src/main/windows/index.ts +23 -0
  208. package/src/preload/index.ts +1047 -0
  209. package/src/renderer/App.tsx +515 -0
  210. package/src/renderer/AppWrapper.tsx +28 -0
  211. package/src/renderer/assets/logo-dark.svg +7 -0
  212. package/src/renderer/assets/logo.svg +7 -0
  213. package/src/renderer/audio/AudioCaptureRenderer.ts +454 -0
  214. package/src/renderer/capture/ScreenRecordingRenderer.ts +492 -0
  215. package/src/renderer/components/AnnotationOverlay.tsx +836 -0
  216. package/src/renderer/components/AudioWaveform.tsx +811 -0
  217. package/src/renderer/components/ClarificationQuestions.tsx +656 -0
  218. package/src/renderer/components/CountdownTimer.tsx +495 -0
  219. package/src/renderer/components/CrashRecoveryDialog.tsx +632 -0
  220. package/src/renderer/components/DonateButton.tsx +127 -0
  221. package/src/renderer/components/ErrorBoundary.tsx +308 -0
  222. package/src/renderer/components/ExportDialog.tsx +872 -0
  223. package/src/renderer/components/HotkeyHint.tsx +261 -0
  224. package/src/renderer/components/KeyboardShortcuts.tsx +787 -0
  225. package/src/renderer/components/ModelDownloadDialog.tsx +844 -0
  226. package/src/renderer/components/Onboarding.tsx +1830 -0
  227. package/src/renderer/components/ProcessingOverlay.tsx +157 -0
  228. package/src/renderer/components/RecordingOverlay.tsx +423 -0
  229. package/src/renderer/components/SessionHistory.tsx +1746 -0
  230. package/src/renderer/components/SessionReview.tsx +1321 -0
  231. package/src/renderer/components/SettingsPanel.tsx +217 -0
  232. package/src/renderer/components/Skeleton.tsx +347 -0
  233. package/src/renderer/components/StatusIndicator.tsx +86 -0
  234. package/src/renderer/components/ThemeProvider.tsx +429 -0
  235. package/src/renderer/components/Tooltip.tsx +370 -0
  236. package/src/renderer/components/TranscriptionPreview.tsx +183 -0
  237. package/src/renderer/components/TranscriptionTierSelector.tsx +640 -0
  238. package/src/renderer/components/UpdateNotification.tsx +377 -0
  239. package/src/renderer/components/WindowSelector.tsx +947 -0
  240. package/src/renderer/components/index.ts +99 -0
  241. package/src/renderer/components/primitives/ApiKeyInput.tsx +98 -0
  242. package/src/renderer/components/primitives/ColorPicker.tsx +65 -0
  243. package/src/renderer/components/primitives/DangerButton.tsx +45 -0
  244. package/src/renderer/components/primitives/DirectoryPicker.tsx +41 -0
  245. package/src/renderer/components/primitives/Dropdown.tsx +34 -0
  246. package/src/renderer/components/primitives/KeyRecorder.tsx +117 -0
  247. package/src/renderer/components/primitives/SettingsSection.tsx +32 -0
  248. package/src/renderer/components/primitives/Slider.tsx +43 -0
  249. package/src/renderer/components/primitives/Toggle.tsx +36 -0
  250. package/src/renderer/components/primitives/index.ts +10 -0
  251. package/src/renderer/components/settings/AdvancedTab.tsx +174 -0
  252. package/src/renderer/components/settings/AppearanceTab.tsx +77 -0
  253. package/src/renderer/components/settings/GeneralTab.tsx +40 -0
  254. package/src/renderer/components/settings/HotkeysTab.tsx +79 -0
  255. package/src/renderer/components/settings/RecordingTab.tsx +84 -0
  256. package/src/renderer/components/settings/index.ts +9 -0
  257. package/src/renderer/components/settings/settingsStyles.ts +673 -0
  258. package/src/renderer/components/settings/tabConfig.tsx +85 -0
  259. package/src/renderer/components/settings/useSettingsPanel.ts +447 -0
  260. package/src/renderer/contexts/ProcessingContext.tsx +227 -0
  261. package/src/renderer/contexts/RecordingContext.tsx +683 -0
  262. package/src/renderer/contexts/UIContext.tsx +326 -0
  263. package/src/renderer/contexts/index.ts +24 -0
  264. package/src/renderer/donateMessages.ts +69 -0
  265. package/src/renderer/hooks/index.ts +75 -0
  266. package/src/renderer/hooks/useAnimation.tsx +544 -0
  267. package/src/renderer/hooks/useTheme.ts +313 -0
  268. package/src/renderer/index.html +26 -0
  269. package/src/renderer/main.tsx +52 -0
  270. package/src/renderer/styles/animations.css +1093 -0
  271. package/src/renderer/styles/app-shell.css +662 -0
  272. package/src/renderer/styles/globals.css +515 -0
  273. package/src/renderer/styles/theme.ts +578 -0
  274. package/src/renderer/types/electron.d.ts +385 -0
  275. package/src/shared/hotkeys.ts +283 -0
  276. package/src/shared/types.ts +809 -0
  277. package/tests/clipboard.test.ts +228 -0
  278. package/tests/e2e/criticalPaths.test.ts +594 -0
  279. package/tests/feedbackAnalyzer.test.ts +303 -0
  280. package/tests/integration/sessionFlow.test.ts +583 -0
  281. package/tests/markdownGenerator.test.ts +418 -0
  282. package/tests/output.test.ts +96 -0
  283. package/tests/setup.ts +486 -0
  284. package/tests/unit/appIntegration.test.ts +676 -0
  285. package/tests/unit/appViewState.test.ts +281 -0
  286. package/tests/unit/audioIpcChannels.test.ts +17 -0
  287. package/tests/unit/exportService.test.ts +492 -0
  288. package/tests/unit/hotkeys.test.ts +92 -0
  289. package/tests/unit/navigationPreload.test.ts +94 -0
  290. package/tests/unit/onboardingFlow.test.ts +345 -0
  291. package/tests/unit/permissionManager.test.ts +175 -0
  292. package/tests/unit/permissionManagerExpanded.test.ts +296 -0
  293. package/tests/unit/screenRecordingRenderer.test.ts +368 -0
  294. package/tests/unit/sessionController.test.ts +515 -0
  295. package/tests/unit/tierManager.test.ts +61 -0
  296. package/tests/unit/tierManagerExpanded.test.ts +142 -0
  297. package/tests/unit/transcriptAnalyzer.test.ts +64 -0
  298. package/tsconfig.json +25 -0
  299. package/vitest.config.ts +46 -0
@@ -0,0 +1,418 @@
1
+ # Troubleshooting Guide
2
+
3
+ This guide helps resolve common issues with markupr.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation Issues](#installation-issues)
8
+ - [Permission Issues](#permission-issues)
9
+ - [Audio Issues](#audio-issues)
10
+ - [Transcription Issues](#transcription-issues)
11
+ - [Screenshot Issues](#screenshot-issues)
12
+ - [Hotkey Issues](#hotkey-issues)
13
+ - [Export Issues](#export-issues)
14
+ - [Performance Issues](#performance-issues)
15
+ - [Getting Help](#getting-help)
16
+
17
+ ## Installation Issues
18
+
19
+ ### macOS: "markupr" cannot be opened because it is from an unidentified developer
20
+
21
+ **Solution**:
22
+ 1. Right-click (or Control-click) the app in Applications
23
+ 2. Select "Open" from the context menu
24
+ 3. Click "Open" in the dialog that appears
25
+ 4. The app will be saved as an exception
26
+
27
+ Or via System Preferences:
28
+ 1. Open System Preferences > Security & Privacy > General
29
+ 2. Click "Open Anyway" next to the blocked app message
30
+ 3. Click "Open" in the confirmation dialog
31
+
32
+ ### macOS: "markupr" is damaged and can't be opened
33
+
34
+ This usually means the app's code signature was invalidated.
35
+
36
+ **Solution**:
37
+ ```bash
38
+ # Remove quarantine attribute
39
+ xattr -cr /Applications/markupr.app
40
+
41
+ # Then try opening again
42
+ open /Applications/markupr.app
43
+ ```
44
+
45
+ ### Windows: SmartScreen Warning
46
+
47
+ **Solution**:
48
+ 1. Click "More info" on the SmartScreen dialog
49
+ 2. Click "Run anyway"
50
+ 3. The app will run normally
51
+
52
+ ### Windows: Installation fails with error code
53
+
54
+ **Common causes**:
55
+ - Antivirus blocking installation
56
+ - Insufficient disk space
57
+ - Running installer from network drive
58
+
59
+ **Solutions**:
60
+ 1. Temporarily disable antivirus
61
+ 2. Clear temp folder: `%TEMP%`
62
+ 3. Run installer as Administrator
63
+ 4. Download installer to local drive first
64
+
65
+ ## Permission Issues
66
+
67
+ ### macOS: Microphone Permission
68
+
69
+ **Symptom**: No audio captured, "Microphone access denied" error
70
+
71
+ **Solution**:
72
+ 1. Open System Preferences > Security & Privacy > Privacy
73
+ 2. Click Microphone in the sidebar
74
+ 3. Find markupr and check the box
75
+ 4. Restart markupr
76
+
77
+ **If markupr isn't listed**:
78
+ 1. Click the lock icon and authenticate
79
+ 2. Click the "+" button
80
+ 3. Navigate to /Applications and select markupr
81
+ 4. Click Open
82
+
83
+ ### macOS: Screen Recording Permission
84
+
85
+ **Symptom**: Black screenshots, "Screen recording not permitted"
86
+
87
+ **Solution**:
88
+ 1. Open System Preferences > Security & Privacy > Privacy
89
+ 2. Click Screen Recording in the sidebar
90
+ 3. Find markupr and check the box
91
+ 4. **Restart markupr** (required for screen recording)
92
+
93
+ **If permission was previously granted but not working**:
94
+ 1. Uncheck markupr
95
+ 2. Quit markupr completely
96
+ 3. Re-check markupr
97
+ 4. Restart markupr
98
+
99
+ ### macOS: Accessibility Permission
100
+
101
+ **Symptom**: Global hotkeys not working in all apps
102
+
103
+ **Solution**:
104
+ 1. Open System Preferences > Security & Privacy > Privacy
105
+ 2. Click Accessibility in the sidebar
106
+ 3. Find markupr and check the box
107
+
108
+ ### Windows: Microphone Access
109
+
110
+ **Symptom**: No audio input
111
+
112
+ **Solution**:
113
+ 1. Open Settings > Privacy > Microphone
114
+ 2. Ensure "Allow apps to access your microphone" is On
115
+ 3. Scroll down and ensure markupr has access
116
+
117
+ ## Audio Issues
118
+
119
+ ### No Audio Detected
120
+
121
+ **Symptoms**:
122
+ - Waveform shows no activity
123
+ - "No audio input" message
124
+ - Transcription is empty
125
+
126
+ **Checklist**:
127
+ 1. **Check permissions** (see above)
128
+ 2. **Check microphone hardware**:
129
+ - Test in other apps (Voice Memos, etc.)
130
+ - Check microphone is plugged in/enabled
131
+ 3. **Check audio device selection**:
132
+ - Open Settings > Recording > Microphone
133
+ - Select the correct input device
134
+ 4. **Check system volume**:
135
+ - Ensure input volume isn't muted
136
+ - macOS: System Preferences > Sound > Input
137
+ - Windows: Settings > Sound > Input
138
+
139
+ ### Wrong Microphone Selected
140
+
141
+ **Solution**:
142
+ 1. Open markupr Settings (`Cmd+,` or `Ctrl+,`)
143
+ 2. Go to Recording tab
144
+ 3. Select correct microphone from dropdown
145
+ 4. Test by speaking - waveform should respond
146
+
147
+ ### Audio is Distorted or Clipping
148
+
149
+ **Symptom**: Transcription is garbled, audio sounds bad
150
+
151
+ **Solutions**:
152
+ 1. Move microphone away from mouth
153
+ 2. Lower microphone input gain:
154
+ - macOS: System Preferences > Sound > Input
155
+ - Windows: Settings > Sound > Input device properties
156
+ 3. Use a lower quality microphone setting
157
+
158
+ ### Bluetooth Audio Issues
159
+
160
+ **Symptom**: Audio cuts out, delays, or doesn't work with Bluetooth headset
161
+
162
+ **Solutions**:
163
+ 1. Use wired microphone if possible
164
+ 2. Disconnect and reconnect Bluetooth device
165
+ 3. Set Bluetooth device as default in system settings
166
+ 4. Check Bluetooth device battery level
167
+
168
+ ## Transcription Issues
169
+
170
+ ### OpenAI Connection Failed
171
+
172
+ **Symptom**: "Connection failed", "API error", no transcription
173
+
174
+ **Checklist**:
175
+ 1. **Verify API key**:
176
+ - Check key is entered correctly (no extra spaces)
177
+ - Try re-entering the key
178
+ - Test with "Test Connection" button
179
+ 2. **Check internet connection**:
180
+ - Test other websites
181
+ - Check firewall isn't blocking OpenAI
182
+ 3. **Check OpenAI account**:
183
+ - Log in to platform.openai.com/api-keys
184
+ - Verify account has available credits
185
+ - Check API key permissions
186
+
187
+ ### Poor Transcription Quality
188
+
189
+ **Symptoms**: Many errors, wrong words, low confidence
190
+
191
+ **Solutions**:
192
+ 1. **Improve audio quality**:
193
+ - Use better microphone
194
+ - Reduce background noise
195
+ - Speak closer to microphone
196
+ 2. **Speak clearly**:
197
+ - Moderate pace
198
+ - Clear enunciation
199
+ - Avoid mumbling
200
+ 3. **Check language setting**:
201
+ - Settings > Advanced > Language
202
+ - Ensure matches your spoken language
203
+
204
+ ### Transcription Lag
205
+
206
+ **Symptom**: Text appears several seconds after speaking
207
+
208
+ **Causes**:
209
+ - Network latency
210
+ - CPU overload
211
+
212
+ **Solutions**:
213
+ 1. Check internet speed
214
+ 2. Close other applications
215
+ 3. Restart markupr
216
+
217
+ ### API Key "Invalid" Error
218
+
219
+ **Solutions**:
220
+ 1. Generate a new API key at platform.openai.com/api-keys
221
+ 2. Ensure key has "Usage" permission
222
+ 3. Copy key carefully (no extra characters)
223
+ 4. Paste in Settings > Advanced > API Key
224
+ 5. Click "Test Connection"
225
+
226
+ ## Screenshot Issues
227
+
228
+ ### Black Screenshots
229
+
230
+ **Symptom**: All screenshots are solid black
231
+
232
+ **Causes**:
233
+ - Screen recording permission not granted
234
+ - DRM-protected content (Netflix, etc.)
235
+ - GPU/driver issues
236
+
237
+ **Solutions**:
238
+ 1. **Grant screen recording permission** (macOS)
239
+ 2. **Avoid DRM content**: Some streaming services block capture
240
+ 3. **Update graphics drivers** (Windows)
241
+ 4. **Disable hardware acceleration**: Settings > Advanced > Debug Mode
242
+
243
+ ### Wrong Monitor Captured
244
+
245
+ **Symptom**: Screenshots from different monitor than selected
246
+
247
+ **Solutions**:
248
+ 1. Use Window Selector carefully
249
+ 2. Select specific window instead of full screen
250
+ 3. Check display arrangement in system settings
251
+
252
+ ### Screenshots Not Capturing
253
+
254
+ **Symptom**: Screenshot count stays at 0
255
+
256
+ **Causes**:
257
+ - Voice pause threshold too high
258
+ - Not pausing long enough
259
+ - Audio issues (no voice detected)
260
+
261
+ **Solutions**:
262
+ 1. Lower pause threshold: Settings > Recording > Pause Threshold
263
+ 2. Pause more deliberately while speaking
264
+ 3. Use manual screenshot: `Cmd+Shift+S` / `Ctrl+Shift+S`
265
+ 4. Check audio is being captured (waveform active)
266
+
267
+ ### Screenshots Too Frequent
268
+
269
+ **Symptom**: Too many screenshots, capturing on every pause
270
+
271
+ **Solutions**:
272
+ 1. Increase pause threshold: Settings > Recording
273
+ 2. Increase minimum time between captures
274
+ 3. Speak more continuously
275
+
276
+ ## Hotkey Issues
277
+
278
+ ### Hotkey Not Working
279
+
280
+ **Symptoms**: Pressing hotkey does nothing
281
+
282
+ **Checklist**:
283
+ 1. **Check permissions** (macOS Accessibility)
284
+ 2. **Check for conflicts**:
285
+ - Another app using same hotkey
286
+ - System shortcut conflict
287
+ 3. **Try different hotkey**: Settings > Hotkeys
288
+ 4. **Restart markupr**
289
+
290
+ ### Hotkey Works in Some Apps Only
291
+
292
+ **Causes**:
293
+ - App captures keystrokes before system (games, VMs)
294
+ - App has same hotkey defined
295
+
296
+ **Solutions**:
297
+ 1. Change markupr hotkey
298
+ 2. Check app's shortcut settings
299
+ 3. Exit full-screen mode
300
+
301
+ ### Hotkey Works but Takes Long
302
+
303
+ **Symptom**: Delay between pressing hotkey and action
304
+
305
+ **Solutions**:
306
+ 1. Close background applications
307
+ 2. Check CPU usage
308
+ 3. Restart markupr
309
+
310
+ ## Export Issues
311
+
312
+ ### Export Fails
313
+
314
+ **Symptoms**: "Export failed" error, no file created
315
+
316
+ **Checklist**:
317
+ 1. **Check disk space**: Ensure enough space for export
318
+ 2. **Check write permissions**: Can you write to output folder?
319
+ 3. **Check path**: Avoid special characters in path
320
+ 4. **Try different location**: Export to Desktop first
321
+
322
+ ### PDF Export Issues
323
+
324
+ **Symptoms**: PDF generation fails, images missing
325
+
326
+ **Solutions**:
327
+ 1. Ensure session has screenshots
328
+ 2. Try with "Include Images" disabled
329
+ 3. Try smaller session (fewer items)
330
+
331
+ ### Corrupted Export
332
+
333
+ **Symptom**: File opens but content is garbled
334
+
335
+ **Solutions**:
336
+ 1. Re-export with different settings
337
+ 2. Try different format
338
+ 3. Check for disk errors
339
+
340
+ ## Performance Issues
341
+
342
+ ### High CPU Usage
343
+
344
+ **Symptoms**: Fan running, system slow during recording
345
+
346
+ **Causes**:
347
+ - Audio processing
348
+ - Transcription
349
+ - Screenshot capture
350
+
351
+ **Solutions**:
352
+ 1. Close other applications
353
+ 2. Disable audio waveform: Settings > Recording
354
+ 3. Increase pause threshold (fewer screenshots)
355
+ 4. Restart markupr periodically
356
+
357
+ ### High Memory Usage
358
+
359
+ **Symptom**: Memory usage grows during long sessions
360
+
361
+ **Solutions**:
362
+ 1. Keep sessions under 10 minutes
363
+ 2. Restart markupr between sessions
364
+ 3. Close other memory-intensive apps
365
+
366
+ ### Slow Export
367
+
368
+ **Symptom**: Export takes very long
369
+
370
+ **Solutions**:
371
+ 1. Use Markdown instead of PDF (faster)
372
+ 2. Disable "Include Images"
373
+ 3. Export fewer items at once
374
+
375
+ ## Getting Help
376
+
377
+ ### Collecting Debug Information
378
+
379
+ 1. Enable debug mode: Settings > Advanced > Debug Mode
380
+ 2. Reproduce the issue
381
+ 3. Collect logs:
382
+ - macOS: `~/Library/Logs/markupr/`
383
+ - Windows: `%APPDATA%\markupr\logs\`
384
+ 4. Include system info:
385
+ - OS version
386
+ - markupr version (Settings footer)
387
+ - Hardware specs
388
+
389
+ ### Reporting Issues
390
+
391
+ When reporting an issue on GitHub:
392
+
393
+ 1. Search existing issues first
394
+ 2. Include:
395
+ - Steps to reproduce
396
+ - Expected behavior
397
+ - Actual behavior
398
+ - Debug logs
399
+ - Screenshots if helpful
400
+ 3. Use the bug report template
401
+
402
+ ### Contact
403
+
404
+ - **GitHub Issues**: [github.com/eddiesanjuan/markupr/issues](https://github.com/eddiesanjuan/markupr/issues)
405
+ - **Documentation**: This documentation
406
+ - **Release Notes**: Check for known issues in release notes
407
+
408
+ ### Self-Diagnosis Checklist
409
+
410
+ Before seeking help, verify:
411
+
412
+ - [ ] markupr is up to date
413
+ - [ ] System meets requirements
414
+ - [ ] Permissions are granted
415
+ - [ ] API key is valid
416
+ - [ ] Internet connection works
417
+ - [ ] Issue persists after restart
418
+ - [ ] Issue persists after reinstall