@hasna/recordings 0.1.24 → 0.1.25

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/dist/cli/index.js CHANGED
@@ -5098,7 +5098,7 @@ var init_pg_migrate = __esm(() => {
5098
5098
  var require_package = __commonJS((exports, module) => {
5099
5099
  module.exports = {
5100
5100
  name: "@hasna/recordings",
5101
- version: "0.1.24",
5101
+ version: "0.1.25",
5102
5102
  type: "module",
5103
5103
  description: "Speech-to-text recording tool with MCP and CLI \u2014 records, transcribes, and optionally enhances text using AI",
5104
5104
  repository: {
@@ -6081,7 +6081,7 @@ async function processText(rawText, config, systemPrompt) {
6081
6081
  }
6082
6082
 
6083
6083
  // src/version.ts
6084
- var VERSION = "0.1.24";
6084
+ var VERSION = "0.1.25";
6085
6085
 
6086
6086
  // src/cli/storage.ts
6087
6087
  import chalk from "chalk";
@@ -7388,4 +7388,8 @@ function findPackageRoot() {
7388
7388
  current = parent;
7389
7389
  }
7390
7390
  }
7391
- program.parse();
7391
+ program.parseAsync().catch((error) => {
7392
+ const msg = error instanceof Error ? error.message : String(error);
7393
+ console.error(`ERROR: ${msg}`);
7394
+ process.exit(1);
7395
+ });
package/dist/mcp/index.js CHANGED
@@ -4920,7 +4920,7 @@ var require_lib2 = __commonJS((exports, module) => {
4920
4920
  var require_package = __commonJS((exports, module) => {
4921
4921
  module.exports = {
4922
4922
  name: "@hasna/recordings",
4923
- version: "0.1.24",
4923
+ version: "0.1.25",
4924
4924
  type: "module",
4925
4925
  description: "Speech-to-text recording tool with MCP and CLI \u2014 records, transcribes, and optionally enhances text using AI",
4926
4926
  repository: {
@@ -9797,7 +9797,7 @@ async function processText(rawText, config, systemPrompt) {
9797
9797
  }
9798
9798
 
9799
9799
  // src/version.ts
9800
- var VERSION = "0.1.24";
9800
+ var VERSION = "0.1.25";
9801
9801
 
9802
9802
  // src/db/storage-config.ts
9803
9803
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.1.24";
1
+ export declare const VERSION = "0.1.25";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/recordings",
3
- "version": "0.1.24",
3
+ "version": "0.1.25",
4
4
  "type": "module",
5
5
  "description": "Speech-to-text recording tool with MCP and CLI — records, transcribes, and optionally enhances text using AI",
6
6
  "repository": {
@@ -12,6 +12,8 @@ final class FnKeyMonitor: @unchecked Sendable {
12
12
  private var healthCheckTimer: Timer?
13
13
  private var fnIsDown = false
14
14
 
15
+ var isRunning: Bool { eventTap != nil }
16
+
15
17
  private static let fnKeyCode: UInt16 = 63
16
18
 
17
19
  /// Start monitoring. Returns true if successful.
@@ -137,6 +137,7 @@ public final class RecordingEngine: ObservableObject {
137
137
 
138
138
  // fn key monitor (CGEventTap-based, swallows fn to prevent emoji picker)
139
139
  private let fnMonitor = FnKeyMonitor()
140
+ private var permissionRetryTimer: Timer?
140
141
 
141
142
  let home = FileManager.default.homeDirectoryForCurrentUser.path
142
143
  private var audioDir: String { "\(home)/.hasna/recordings/audio" }
@@ -193,6 +194,16 @@ public final class RecordingEngine: ObservableObject {
193
194
  }
194
195
  }
195
196
 
197
+ // Granting Accessibility does not revive a tap that failed to create,
198
+ // so retry until permissions arrive instead of requiring a relaunch.
199
+ permissionRetryTimer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) { [weak self] _ in
200
+ Task { @MainActor [weak self] in
201
+ guard let self, self.useFnKey, !self.fnMonitor.isRunning, AXIsProcessTrusted() else { return }
202
+ self.log("accessibility granted — retrying fn monitor")
203
+ self.updateFnMonitor()
204
+ }
205
+ }
206
+
196
207
  updateStatus()
197
208
  }
198
209