node-mac-recorder 2.6.12 → 2.6.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-mac-recorder",
3
- "version": "2.6.12",
3
+ "version": "2.6.14",
4
4
  "description": "Native macOS screen recording package for Node.js applications",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -550,6 +550,13 @@ void updateOverlay() {
550
550
  [infoLabel setFont:[NSFont systemFontOfSize:18 weight:NSFontWeightMedium]];
551
551
  [infoLabel setTextColor:[NSColor whiteColor]];
552
552
 
553
+ // Force no borders on info label
554
+ [infoLabel setWantsLayer:YES];
555
+ infoLabel.layer.borderWidth = 0.0;
556
+ infoLabel.layer.borderColor = [[NSColor clearColor] CGColor];
557
+ infoLabel.layer.cornerRadius = 0.0;
558
+ infoLabel.layer.masksToBounds = YES;
559
+
553
560
  [g_overlayWindow.contentView addSubview:infoLabel];
554
561
  }
555
562
 
@@ -569,6 +576,14 @@ void updateOverlay() {
569
576
  [appIconView.layer setCornerRadius:8.0];
570
577
  [appIconView.layer setMasksToBounds:YES];
571
578
  [appIconView.layer setBackgroundColor:[[NSColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.3] CGColor]]; // Debug background
579
+
580
+ // Force no borders on app icon view
581
+ appIconView.layer.borderWidth = 0.0;
582
+ appIconView.layer.borderColor = [[NSColor clearColor] CGColor];
583
+ appIconView.layer.shadowOpacity = 0.0;
584
+ appIconView.layer.shadowRadius = 0.0;
585
+ appIconView.layer.shadowOffset = NSMakeSize(0, 0);
586
+
572
587
  [g_overlayWindow.contentView addSubview:appIconView];
573
588
  NSLog(@"🖼️ Created app icon view at frame: (%.0f, %.0f, %.0f, %.0f)",
574
589
  appIconView.frame.origin.x, appIconView.frame.origin.y,
@@ -666,6 +681,22 @@ void updateOverlay() {
666
681
  [g_overlayWindow orderFront:nil];
667
682
  [g_overlayWindow makeKeyAndOrderFront:nil];
668
683
 
684
+ // Ensure all subviews have no borders after positioning
685
+ for (NSView *subview in [g_overlayWindow.contentView subviews]) {
686
+ if ([subview respondsToSelector:@selector(setWantsLayer:)]) {
687
+ [subview setWantsLayer:YES];
688
+ if (subview.layer) {
689
+ subview.layer.borderWidth = 0.0;
690
+ subview.layer.borderColor = [[NSColor clearColor] CGColor];
691
+ subview.layer.cornerRadius = 0.0;
692
+ subview.layer.masksToBounds = YES;
693
+ subview.layer.shadowOpacity = 0.0;
694
+ subview.layer.shadowRadius = 0.0;
695
+ subview.layer.shadowOffset = NSMakeSize(0, 0);
696
+ }
697
+ }
698
+ }
699
+
669
700
  NSLog(@" ✅ Overlay Status: Level=%ld, Alpha=%.1f, Visible=%s, Frame Set=YES",
670
701
  [g_overlayWindow level], [g_overlayWindow alphaValue],
671
702
  [g_overlayWindow isVisible] ? "YES" : "NO");
@@ -857,12 +888,12 @@ void updateScreenOverlays() {
857
888
  NSButton *button = (NSButton *)subview;
858
889
  if ([button.title isEqualToString:@"Start Record"]) {
859
890
  if (isActiveScreen) {
860
- // Active screen: bright, prominent button
861
- [button.layer setBackgroundColor:[[NSColor colorWithRed:0.7 green:0.45 blue:0.9 alpha:1.0] CGColor]];
891
+ // Active screen: bright, prominent button with new RGB color
892
+ [button.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:1.0] CGColor]];
862
893
  [button setAlphaValue:1.0];
863
894
  } else {
864
- // Inactive screen: dimmer button
865
- [button.layer setBackgroundColor:[[NSColor colorWithRed:0.4 green:0.25 blue:0.55 alpha:0.8] CGColor]];
895
+ // Inactive screen: dimmer button with new RGB color
896
+ [button.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.6] CGColor]];
866
897
  [button setAlphaValue:0.7];
867
898
  }
868
899
  }
@@ -1070,9 +1101,9 @@ bool startScreenSelection() {
1070
1101
  [selectButton setFont:[NSFont systemFontOfSize:16 weight:NSFontWeightRegular]];
1071
1102
  [selectButton setTag:i]; // Set screen index as tag
1072
1103
 
1073
- // Modern button styling with purple tone
1104
+ // Modern button styling with new RGB color
1074
1105
  [selectButton setWantsLayer:YES];
1075
- [selectButton.layer setBackgroundColor:[[NSColor colorWithRed:0.55 green:0.3 blue:0.75 alpha:0.95] CGColor]];
1106
+ [selectButton.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.95] CGColor]];
1076
1107
  [selectButton.layer setCornerRadius:8.0];
1077
1108
  [selectButton.layer setBorderWidth:0.0];
1078
1109
 
@@ -1408,6 +1439,9 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
1408
1439
  backing:NSBackingStoreBuffered
1409
1440
  defer:NO];
1410
1441
 
1442
+ // Force completely borderless appearance
1443
+ [g_overlayWindow setStyleMask:NSWindowStyleMaskBorderless];
1444
+
1411
1445
  [g_overlayWindow setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)]; // Absolute highest level
1412
1446
  [g_overlayWindow setOpaque:NO];
1413
1447
  [g_overlayWindow setBackgroundColor:[NSColor clearColor]];
@@ -1439,6 +1473,13 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
1439
1473
  g_overlayWindow.layer.cornerRadius = 0.0;
1440
1474
  g_overlayWindow.layer.masksToBounds = YES;
1441
1475
 
1476
+ // Force content view to have no borders
1477
+ g_overlayWindow.contentView.wantsLayer = YES;
1478
+ g_overlayWindow.contentView.layer.borderWidth = 0.0;
1479
+ g_overlayWindow.contentView.layer.borderColor = [[NSColor clearColor] CGColor];
1480
+ g_overlayWindow.contentView.layer.cornerRadius = 0.0;
1481
+ g_overlayWindow.contentView.layer.masksToBounds = YES;
1482
+
1442
1483
  // Additional window styling to ensure no borders or decorations
1443
1484
  [g_overlayWindow setMovable:NO];
1444
1485
  [g_overlayWindow setMovableByWindowBackground:NO];
@@ -1450,9 +1491,9 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
1450
1491
  [g_selectButton setBordered:NO];
1451
1492
  [g_selectButton setFont:[NSFont systemFontOfSize:16 weight:NSFontWeightRegular]];
1452
1493
 
1453
- // Modern button styling with purple tone
1494
+ // Modern button styling with new RGB color
1454
1495
  [g_selectButton setWantsLayer:YES];
1455
- [g_selectButton.layer setBackgroundColor:[[NSColor colorWithRed:0.55 green:0.3 blue:0.75 alpha:0.95] CGColor]];
1496
+ [g_selectButton.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.95] CGColor]];
1456
1497
  [g_selectButton.layer setCornerRadius:8.0];
1457
1498
  [g_selectButton.layer setBorderWidth:0.0];
1458
1499
 
@@ -1523,6 +1564,22 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
1523
1564
  // Add cancel button to window
1524
1565
  [g_overlayWindow.contentView addSubview:cancelButton];
1525
1566
 
1567
+ // Force all subviews to have no borders
1568
+ for (NSView *subview in [g_overlayWindow.contentView subviews]) {
1569
+ if ([subview respondsToSelector:@selector(setWantsLayer:)]) {
1570
+ [subview setWantsLayer:YES];
1571
+ if (subview.layer) {
1572
+ subview.layer.borderWidth = 0.0;
1573
+ subview.layer.borderColor = [[NSColor clearColor] CGColor];
1574
+ subview.layer.cornerRadius = 0.0;
1575
+ subview.layer.masksToBounds = YES;
1576
+ subview.layer.shadowOpacity = 0.0;
1577
+ subview.layer.shadowRadius = 0.0;
1578
+ subview.layer.shadowOffset = NSMakeSize(0, 0);
1579
+ }
1580
+ }
1581
+ }
1582
+
1526
1583
  // Cancel button reference will be found dynamically in positioning code
1527
1584
 
1528
1585
  // Timer approach doesn't work well with Node.js