MCPcopy Create free account
hub / github.com/TechJeeper/Printventory / calculateFileHash

Function calculateFileHash

main.js:2410–2491  ·  view source on GitHub ↗
(filePath)

Source from the content-addressed store, hash-verified

2408 { key: 'tosAcceptedDate', value: null },
2409 { key: 'theme', value: 'light' },
2410 { key: 'apiKey', value: null },
2411 { key: 'aiModel', value: 'gpt-5-nano' },
2412 { key: 'maxThumbnailSize', value: '300' },
2413 { key: 'maxConcurrentRenders', value: '3' },
2414 { key: 'lastVersionCheck', value: new Date().toISOString() },
2415 { key: 'CollectUsage', value: '1' }, // Default to opt-in for analytics
2416 { key: 'ClientId', value: crypto.randomUUID() }, // Generate a unique client ID
2417 { key: 'currentVersion', value: version }, // Use imported version from package.json
2418 { key: 'versionCheckPerformedOnStartup', value: 'false' }, // New setting for version check tracking
2419 { key: 'enableZipArchives', value: '0' }, // ZIP archive support disabled by default
2420 { key: 'scanAdditionalFileTypes', value: '[]' }, // JSON array of catalog ids for additional scan types (e.g. ["obj","step"])
2421 { key: 'aiTagMaxTags', value: '10' }, // Maximum number of AI-generated tags
2422 { key: 'aiTagUseCategories', value: '0' }, // Use category-based tagging
2423 { key: 'aiTagMergeStrategy', value: 'merge' }, // How to merge AI tags: 'replace', 'merge', 'append'
2424 { key: 'aiTagAllowRetagging', value: '0' }, // Allow re-tagging even if "AI Tagged" exists
2425 { key: 'aiTagConcurrency', value: '3' }, // Number of concurrent tag generation requests
2426 { key: 'enableBrowserExtension', value: '0' }, // Browser extension local server disabled by default
2427 { key: 'browserExtensionPort', value: '5000' }, // Port for browser extension server (default 5000)
2428 ];
2429
2430 // Insert default settings if they don't exist
2431 const insertStmt = db.prepare('INSERT OR IGNORE INTO settings (key, value) VALUES (?, ?)');
2432
2433 for (const setting of defaultSettings) {
2434 insertStmt.run(setting.key, setting.value);
2435 }
2436
2437 console.log('Default settings initialized');
2438 return true;
2439 } catch (error) {
2440 console.error('Error initializing default settings:', error);
2441 return false;
2442 }
2443}
2444
2445async function createWindow() {
2446 const { width, height } = screen.getPrimaryDisplay().workAreaSize;
2447 mainWindow = new BrowserWindow({
2448 width: Math.min(1600, width),
2449 height: Math.min(1000, height),
2450 backgroundColor: '#1e1e2e', // Match app's dark theme to prevent white flash
2451 show: false, // Don't show until ready to prevent white flash
2452 webPreferences: {
2453 nodeIntegration: false,
2454 contextIsolation: true,
2455 preload: path.join(__dirname, 'preload.js'),
2456 spellcheck: false,
2457 // Add these settings for clipboard access
2458 sandbox: false,
2459 enableWebSQL: false,
2460 webSecurity: true // Keep web security enabled, but allow puter.com API calls
2461 }
2462 });
2463 // mainWindow.webContents.openDevTools() // Disabled - prevents auto-opening debug console on load
2464
2465 // Allow puter.com API requests (handle CORS if needed)
2466 mainWindow.webContents.session.webRequest.onBeforeSendHeaders(
2467 { urls: ['https://api.puter.com/*', 'https://js.puter.com/*'] },

Callers 2

main.jsFile · 0.70

Calls 3

extractModelFromZipFunction · 0.85
parseZipPathFunction · 0.70
debugLogFunction · 0.70

Tested by

no test coverage detected