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,334 @@
1
+ # Keyboard Shortcuts Reference
2
+
3
+ markupr uses keyboard shortcuts for efficient workflows. This guide covers all available shortcuts and how to customize them.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Quick Reference](#quick-reference)
8
+ - [Recording Shortcuts](#recording-shortcuts)
9
+ - [Navigation Shortcuts](#navigation-shortcuts)
10
+ - [Editing Shortcuts](#editing-shortcuts)
11
+ - [Annotation Shortcuts](#annotation-shortcuts)
12
+ - [Window Shortcuts](#window-shortcuts)
13
+ - [Customization](#customization)
14
+ - [Platform Differences](#platform-differences)
15
+ - [Troubleshooting](#troubleshooting)
16
+
17
+ ## Quick Reference
18
+
19
+ ### Global Hotkeys (work from any application)
20
+
21
+ | Action | macOS | Windows/Linux |
22
+ |--------|-------|---------------|
23
+ | Start/Stop Recording | `Cmd+Shift+F` | `Ctrl+Shift+F` |
24
+ | Manual Screenshot | `Cmd+Shift+S` | `Ctrl+Shift+S` |
25
+
26
+ ### In-App Shortcuts
27
+
28
+ | Action | macOS | Windows/Linux |
29
+ |--------|-------|---------------|
30
+ | Settings | `Cmd+,` | `Ctrl+,` |
31
+ | Keyboard Shortcuts Panel | `Cmd+/` | `Ctrl+/` |
32
+ | Close Dialog | `Escape` | `Escape` |
33
+ | Quit | `Cmd+Q` | `Alt+F4` |
34
+
35
+ ## Recording Shortcuts
36
+
37
+ ### Start/Stop Recording
38
+ **Default**: `Cmd+Shift+F` (macOS) / `Ctrl+Shift+F` (Windows)
39
+
40
+ This is the primary shortcut that:
41
+ - Starts a new recording session when idle
42
+ - Shows the window selector on first press
43
+ - Stops recording and saves when recording
44
+
45
+ **Customizable**: Yes (Settings > Hotkeys)
46
+
47
+ ### Manual Screenshot
48
+ **Default**: `Cmd+Shift+S` (macOS) / `Ctrl+Shift+S` (Windows)
49
+
50
+ Captures a screenshot immediately during recording, bypassing the voice pause detection. Useful for:
51
+ - Capturing specific moments
52
+ - Screenshots during continuous speech
53
+ - Precise timing control
54
+
55
+ **Customizable**: Yes (Settings > Hotkeys)
56
+
57
+ ### Pause/Resume Recording
58
+ **Default**: `Cmd+Shift+P` (macOS) / `Ctrl+Shift+P` (Windows)
59
+
60
+ Temporarily pauses the recording session:
61
+ - Audio capture continues (for recovery buffer)
62
+ - Screenshots are not captured
63
+ - Transcription is paused
64
+
65
+ Press again to resume recording.
66
+
67
+ **Customizable**: Not currently
68
+
69
+ ## Navigation Shortcuts
70
+
71
+ ### Open Settings
72
+ **Shortcut**: `Cmd+,` (macOS) / `Ctrl+,` (Windows)
73
+
74
+ Opens the Settings panel.
75
+
76
+ ### Session History
77
+ **Shortcut**: `Cmd+H` (macOS) / `Ctrl+H` (Windows)
78
+
79
+ Opens the Session History browser to view past recordings.
80
+
81
+ ### Keyboard Shortcuts Panel
82
+ **Shortcut**: `Cmd+/` (macOS) / `Ctrl+/` (Windows)
83
+
84
+ Opens this keyboard shortcuts reference panel within the app.
85
+
86
+ ### Close Dialog/Panel
87
+ **Shortcut**: `Escape`
88
+
89
+ Closes the current dialog, panel, or modal:
90
+ - Settings panel
91
+ - Window selector
92
+ - Session review
93
+ - Export dialog
94
+ - Any modal
95
+
96
+ ### Minimize Window
97
+ **Shortcut**: `Cmd+M` (macOS)
98
+
99
+ Minimizes the markupr window to the dock.
100
+
101
+ ### Quit Application
102
+ **Shortcut**: `Cmd+Q` (macOS) / `Alt+F4` (Windows)
103
+
104
+ Completely quits markupr:
105
+ - Stops any active recording
106
+ - Saves session state for crash recovery
107
+ - Removes tray icon
108
+
109
+ ## Editing Shortcuts
110
+
111
+ These shortcuts work in the Session Review panel.
112
+
113
+ ### Delete Selected Item
114
+ **Shortcut**: `Backspace` (macOS) / `Delete` (Windows)
115
+
116
+ Deletes the currently selected feedback item.
117
+
118
+ ### Edit Item
119
+ **Shortcut**: `Enter` or `Return`
120
+
121
+ Opens the selected item for inline editing of:
122
+ - Transcription text
123
+ - Annotations
124
+
125
+ ### Move Item Up
126
+ **Shortcut**: `Cmd+Up` (macOS) / `Ctrl+Up` (Windows)
127
+
128
+ Moves the selected item up in the list, changing its order in the export.
129
+
130
+ ### Move Item Down
131
+ **Shortcut**: `Cmd+Down` (macOS) / `Ctrl+Down` (Windows)
132
+
133
+ Moves the selected item down in the list.
134
+
135
+ ### Undo
136
+ **Shortcut**: `Cmd+Z` (macOS) / `Ctrl+Z` (Windows)
137
+
138
+ Undoes the last action:
139
+ - Deletion
140
+ - Reorder
141
+ - Text edit
142
+ - Annotation
143
+
144
+ ### Redo
145
+ **Shortcut**: `Cmd+Shift+Z` (macOS) / `Ctrl+Shift+Z` or `Ctrl+Y` (Windows)
146
+
147
+ Redoes the last undone action.
148
+
149
+ ### Select All
150
+ **Shortcut**: `Cmd+A` (macOS) / `Ctrl+A` (Windows)
151
+
152
+ Selects all feedback items in the current session.
153
+
154
+ ## Annotation Shortcuts
155
+
156
+ These shortcuts work when an item is selected for annotation.
157
+
158
+ ### Tool Selection
159
+
160
+ | Tool | Shortcut | Description |
161
+ |------|----------|-------------|
162
+ | Arrow | `1` | Draw arrows to highlight areas |
163
+ | Circle | `2` | Draw circles around elements |
164
+ | Rectangle | `3` | Draw rectangles to box areas |
165
+ | Freehand | `4` | Draw freeform lines |
166
+ | Text | `5` | Add text labels |
167
+
168
+ ### Clear All Annotations
169
+ **Shortcut**: `Cmd+Backspace` (macOS) / `Ctrl+Backspace` (Windows)
170
+
171
+ Removes all annotations from the current screenshot.
172
+
173
+ ### Annotation Colors
174
+ While annotating:
175
+ - `Shift+1` through `Shift+5`: Quick color selection
176
+ - Or use the color picker in the annotation toolbar
177
+
178
+ ## Window Shortcuts
179
+
180
+ ### Minimize
181
+ **Shortcut**: `Cmd+M` (macOS)
182
+
183
+ Minimizes to the dock.
184
+
185
+ ### Hide Application
186
+ **Shortcut**: `Cmd+H` (macOS)
187
+
188
+ Hides all markupr windows (app stays running in tray).
189
+
190
+ ### Close Window
191
+ **Shortcut**: `Cmd+W` (macOS) / `Ctrl+W` (Windows)
192
+
193
+ Closes the current window (app stays running in tray on macOS).
194
+
195
+ ## Customization
196
+
197
+ ### How to Customize Hotkeys
198
+
199
+ 1. Open Settings (`Cmd+,` or `Ctrl+,`)
200
+ 2. Navigate to the **Hotkeys** tab
201
+ 3. Click on the shortcut field you want to change
202
+ 4. Press your desired key combination
203
+ 5. The shortcut saves automatically
204
+
205
+ ### Recording a New Shortcut
206
+
207
+ When the shortcut field is active:
208
+ 1. Press your modifier keys (Cmd, Shift, Alt, Ctrl)
209
+ 2. Press the letter or function key
210
+ 3. The combination is displayed
211
+ 4. Press Escape to cancel
212
+
213
+ ### Conflict Detection
214
+
215
+ markupr automatically detects conflicts:
216
+ - **Internal conflicts**: Another markupr shortcut uses the same keys
217
+ - **System conflicts**: Known system shortcuts (may not catch all)
218
+
219
+ If a conflict is detected:
220
+ - A warning message appears
221
+ - You can still save the shortcut
222
+ - The conflicting shortcut will not work
223
+
224
+ ### Supported Key Combinations
225
+
226
+ **Modifiers**:
227
+ - `Cmd` / `Command` (macOS)
228
+ - `Ctrl` / `Control` (Windows/Linux)
229
+ - `Shift`
230
+ - `Alt` / `Option`
231
+
232
+ **Keys**:
233
+ - Letters: A-Z
234
+ - Numbers: 0-9
235
+ - Function keys: F1-F12
236
+ - Special: Backspace, Delete, Enter, Escape, Tab
237
+ - Arrows: Up, Down, Left, Right
238
+
239
+ **Recommended patterns**:
240
+ - `Cmd/Ctrl + Shift + Letter` - Most reliable
241
+ - `Cmd/Ctrl + Alt + Letter` - Good alternative
242
+ - Avoid using just `Cmd/Ctrl + Letter` (conflicts with common shortcuts)
243
+
244
+ ## Platform Differences
245
+
246
+ ### macOS
247
+
248
+ | Key | Symbol |
249
+ |-----|--------|
250
+ | Command | ⌘ |
251
+ | Shift | ⇧ |
252
+ | Option/Alt | ⌥ |
253
+ | Control | ⌃ |
254
+ | Return | ⏎ |
255
+ | Delete | ⌫ |
256
+
257
+ ### Windows/Linux
258
+
259
+ Uses text labels instead of symbols:
260
+ - `Ctrl` instead of ⌃
261
+ - `Shift` instead of ⇧
262
+ - `Alt` instead of ⌥
263
+
264
+ ### Key Differences
265
+
266
+ | Action | macOS | Windows |
267
+ |--------|-------|---------|
268
+ | Quit App | `Cmd+Q` | `Alt+F4` |
269
+ | Delete | `Backspace` or `Delete` | `Delete` |
270
+ | Redo | `Cmd+Shift+Z` | `Ctrl+Y` |
271
+ | Settings | `Cmd+,` | `Ctrl+,` |
272
+
273
+ ## Troubleshooting
274
+
275
+ ### Shortcuts Not Working
276
+
277
+ **Check global shortcut registration**:
278
+ 1. Look for the tray icon indicator
279
+ 2. If no icon, markupr may not have registered hotkeys
280
+ 3. Restart markupr
281
+
282
+ **Check permissions (macOS)**:
283
+ 1. System Preferences > Security & Privacy > Accessibility
284
+ 2. Ensure markupr is checked
285
+ 3. Restart markupr if you made changes
286
+
287
+ **Check for conflicts**:
288
+ 1. Another app may be capturing the shortcut first
289
+ 2. Try changing to a different shortcut
290
+ 3. Common conflicts: screenshot tools, window managers
291
+
292
+ ### Shortcuts Work in Some Apps But Not Others
293
+
294
+ Some applications capture keyboard input before system hotkeys:
295
+ - Full-screen games
296
+ - Virtual machines
297
+ - Some IDEs (VS Code, IntelliJ)
298
+
299
+ **Solutions**:
300
+ - Use a different shortcut
301
+ - Exit full-screen mode
302
+ - Check app-specific shortcut settings
303
+
304
+ ### Resetting Shortcuts
305
+
306
+ To reset all shortcuts to defaults:
307
+ 1. Open Settings > Hotkeys
308
+ 2. Click the reset icon (circular arrow) in the section header
309
+ 3. Confirm the reset
310
+
311
+ Or reset individual shortcuts by:
312
+ 1. Click the shortcut field
313
+ 2. Press the default key combination
314
+ 3. Save
315
+
316
+ ### Hotkey Not Registering
317
+
318
+ If a hotkey doesn't appear after pressing keys:
319
+ - Make sure you're pressing at least one modifier key
320
+ - Some keys cannot be used as hotkeys (Fn, media keys)
321
+ - Try pressing keys more slowly
322
+
323
+ ### Finding Conflicting Applications
324
+
325
+ To identify what's capturing your shortcut:
326
+ 1. Quit applications one by one
327
+ 2. Test the shortcut after each
328
+ 3. The conflict is with the last-quit app
329
+
330
+ Common culprits:
331
+ - Screenshot tools (Snagit, CleanShot)
332
+ - Clipboard managers (Alfred, Paste)
333
+ - Window managers (Magnet, Rectangle)
334
+ - System utilities (BetterTouchTool)