Files
tkmind_go/ui/desktop/scripts/unregister-deeplink-protocols.js
T

88 lines
3.6 KiB
JavaScript
Executable File

#!/usr/bin/env node
/**
* Script to unregister ALL goose:// protocol handlers
* Usage: node scripts/unregister-deeplink-protocols.js
*/
const { execSync } = require('child_process');
const PROTOCOL = 'goose';
function unregisterAllProtocolHandlers() {
console.log('Unregistering ALL goose:// protocol handlers...');
try {
// Get all registered Goose apps
console.log('Finding all registered Goose applications...');
const lsregisterOutput = execSync(`/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -B 10 -A 10 "claimed schemes:.*${PROTOCOL}:"`, { encoding: 'utf8' });
// Extract app paths from the output
const pathMatches = lsregisterOutput.match(/path:\s+(.+\.app)/g);
const uniquePaths = new Set();
if (pathMatches) {
pathMatches.forEach(match => {
const path = match.replace(/path:\s+/, '').trim();
if (path.includes('Goose') || path.includes('goose')) {
uniquePaths.add(path);
}
});
}
console.log(`Found ${uniquePaths.size} Goose app(s) to unregister:`);
uniquePaths.forEach(path => console.log(` - ${path}`));
// Unregister each app
let unregisteredCount = 0;
uniquePaths.forEach(appPath => {
try {
console.log(`Unregistering: ${appPath}`);
execSync(`/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -u "${appPath}"`, { stdio: 'ignore' });
unregisteredCount++;
} catch (error) {
console.log(` Warning: Could not unregister ${appPath} (may already be unregistered)`);
}
});
// Also try to unregister by bundle identifier
console.log('\nUnregistering by bundle identifier...');
const bundleIds = [
'com.electron.goose',
'com.block.goose',
'com.block.goose.dev'
];
bundleIds.forEach(bundleId => {
try {
console.log(`Unregistering bundle: ${bundleId}`);
execSync(`/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -u "${bundleId}"`, { stdio: 'ignore' });
} catch (error) {
// Ignore errors for bundle IDs that don't exist
}
});
// Force Launch Services to rebuild its database
console.log('Rebuilding Launch Services database...');
try {
execSync('/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user', { stdio: 'ignore' });
} catch (error) {
console.log('Warning: Could not rebuild Launch Services database');
}
console.log(`\n✅ Successfully processed ${unregisteredCount} Goose applications`);
console.log('All goose:// protocol handlers have been unregistered.');
console.log('\nNote: You may need to restart your system for changes to take full effect.');
} catch (error) {
console.error('Error during unregistration:', error.message);
console.log('\nManual cleanup options:');
console.log('1. Use Activity Monitor to quit all Goose processes');
console.log('2. Delete Goose apps from Applications folder');
console.log('3. Run: sudo /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user');
}
}
// Run the unregistration immediately
unregisterAllProtocolHandlers();