diff --git a/.github/DISCUSSION_TEMPLATE/bug-reports.yml b/.github/DISCUSSION_TEMPLATE/bug-reports.yml index 1a928be..9c88d2a 100644 --- a/.github/DISCUSSION_TEMPLATE/bug-reports.yml +++ b/.github/DISCUSSION_TEMPLATE/bug-reports.yml @@ -10,15 +10,11 @@ body: attributes: value: "# Bug Report" - - type: dropdown + - type: input attributes: label: Version description: What version of BetterCapture are you running? You can find this in Settings > General. - options: - - v2026.1.3 - - v2026.1.2 - - v2026.1.1 - - v2026.1.0 + placeholder: "v2026.2" validations: required: true diff --git a/BetterCapture/View/MenuBarView.swift b/BetterCapture/View/MenuBarView.swift index 238efcb..1180eb0 100644 --- a/BetterCapture/View/MenuBarView.swift +++ b/BetterCapture/View/MenuBarView.swift @@ -47,9 +47,9 @@ struct MenuBarView: View { accentColor: .green, isDisabled: !viewModel.canStartRecording ) { - dismiss() Task { await viewModel.startRecording() + dismiss() } } .padding(.top, 8) diff --git a/BetterCapture/ViewModel/RecorderViewModel.swift b/BetterCapture/ViewModel/RecorderViewModel.swift index ae096ac..22dc88b 100644 --- a/BetterCapture/ViewModel/RecorderViewModel.swift +++ b/BetterCapture/ViewModel/RecorderViewModel.swift @@ -222,6 +222,9 @@ final class RecorderViewModel { } logger.info("Video size: \(self.videoSize.width)x\(self.videoSize.height)") + // Access security-scoped output directory before writing + settings.startAccessingOutputDirectory() + // Setup asset writer let outputURL = settings.generateOutputURL() try assetWriter.setup(url: outputURL, settings: settings, videoSize: videoSize) @@ -247,6 +250,7 @@ final class RecorderViewModel { lastError = error cameraSession.stop() selectionBorderFrame.dismiss() + settings.stopAccessingOutputDirectory() logger.error("Failed to start recording: \(error.localizedDescription)") } } @@ -279,10 +283,13 @@ final class RecorderViewModel { // Send notification notificationService.sendRecordingSavedNotification(fileURL: outputURL) + settings.stopAccessingOutputDirectory() + } catch { state = .idle lastError = error assetWriter.cancel() + settings.stopAccessingOutputDirectory() notificationService.sendRecordingFailedNotification(error: error) logger.error("Failed to stop recording: \(error.localizedDescription)") }