3 Commits
Author SHA1 Message Date
Илья Глазунов 6926c27f20 похуй
Build and Release / build (x64, ubuntu-latest, linux) (push) Has been skipped
Build and Release / build (arm64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, windows-latest, win32) (push) Has been cancelled
Build and Release / release (push) Has been cancelled
2026-01-15 19:37:13 +03:00
Илья Глазунов cbf82f9317 Refactor screen capture handler to use system picker across all platforms
Build and Release / build (x64, ubuntu-latest, linux) (push) Has been skipped
Build and Release / build (arm64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, windows-latest, win32) (push) Has been cancelled
Build and Release / release (push) Has been cancelled
2026-01-15 19:28:45 +03:00
Илья Глазунов bf9ec15912 Bump version to 0.5.3 and enhance Windows audio capture using loopback
Build and Release / build (x64, ubuntu-latest, linux) (push) Has been skipped
Build and Release / build (arm64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, macos-latest, darwin) (push) Has been cancelled
Build and Release / build (x64, windows-latest, win32) (push) Has been cancelled
Build and Release / release (push) Has been cancelled
2026-01-15 19:20:34 +03:00
3 changed files with 23 additions and 75 deletions
+13 -9
View File
@@ -30,15 +30,15 @@ module.exports = {
],
// use `security find-identity -v -p codesigning` to find your identity
// for macos signing
// Use ad-hoc signing with entitlements for local development
osxSign: {
identity: '-', // ad-hoc signing (no Apple Developer account needed)
optionsForFile: (filePath) => {
return {
entitlements: 'entitlements.plist',
};
},
},
// Disabled for local builds - ad-hoc signing causes issues
// osxSign: {
// identity: '-', // ad-hoc signing (no Apple Developer account needed)
// optionsForFile: (filePath) => {
// return {
// entitlements: 'entitlements.plist',
// };
// },
// },
// notarize is off - requires Apple Developer account
// osxNotarize: {
// appleId: 'your apple id',
@@ -61,6 +61,10 @@ module.exports = {
{
name: '@electron-forge/maker-dmg',
platforms: ['darwin'],
config: {
name: 'CheatingDaddy',
format: 'ULFO',
},
},
{
name: '@reforged/maker-appimage',
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "cheating-daddy",
"productName": "cheating-daddy",
"version": "0.5.2",
"version": "0.5.6",
"description": "cheating daddy",
"main": "src/index.js",
"scripts": {
+4 -60
View File
@@ -35,71 +35,15 @@ function createWindow(sendToRenderer, geminiSessionRef) {
const { session, desktopCapturer } = require('electron');
// Setup display media request handler for screen capture
if (process.platform === 'darwin') {
// On macOS, use SystemAudioDump for audio (not browser loopback)
// So we just need to capture the screen
session.defaultSession.setDisplayMediaRequestHandler(
async (request, callback) => {
try {
const sources = await desktopCapturer.getSources({
types: ['screen'],
thumbnailSize: { width: 0, height: 0 } // Skip thumbnail generation for speed
});
if (sources.length === 0) {
console.error('No screen sources available');
callback(null);
return;
}
// On macOS, directly use the first screen (system already granted permission)
// Audio is handled separately by SystemAudioDump
console.log('Screen capture source:', sources[0].name);
callback({ video: sources[0], audio: 'loopback' });
} catch (error) {
console.error('Error getting screen sources:', error);
callback(null);
}
},
{ useSystemPicker: false } // Disable system picker, use our source directly
);
} else if (process.platform === 'win32') {
// On Windows, use system picker so user can enable "Share audio" checkbox
// This is REQUIRED for system audio capture on Windows
// Use system picker on all platforms to let user choose screen/window and audio
session.defaultSession.setDisplayMediaRequestHandler(
(request, callback) => {
console.log('Windows: Using system picker for screen/audio selection');
// Don't call callback - let system picker handle it
// The system picker will provide both video and audio if user checks the box
// Don't call callback - let system picker handle the selection
// The system will call callback with user's choice
console.log('Showing system screen picker dialog...');
},
{ useSystemPicker: true }
);
} else {
// On Linux, try to get system audio via loopback
session.defaultSession.setDisplayMediaRequestHandler(
async (request, callback) => {
try {
const sources = await desktopCapturer.getSources({
types: ['screen'],
thumbnailSize: { width: 0, height: 0 }
});
if (sources.length === 0) {
console.error('No screen sources available');
callback(null);
return;
}
console.log('Linux: Using screen source with loopback audio');
callback({ video: sources[0], audio: 'loopback' });
} catch (error) {
console.error('Error getting screen sources:', error);
callback(null);
}
},
{ useSystemPicker: false }
);
}
mainWindow.setResizable(false);
mainWindow.setContentProtection(true);