mirror of
https://github.com/arkorty/prodmon.git
synced 2026-03-17 16:51:46 +00:00
...
This commit is contained in:
@@ -4,6 +4,7 @@ const { FuseV1Options, FuseVersion } = require('@electron/fuses');
|
||||
module.exports = {
|
||||
packagerConfig: {
|
||||
asar: true,
|
||||
icon: 'src/assets/prodmon',
|
||||
},
|
||||
rebuildConfig: {},
|
||||
makers: [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "monitor",
|
||||
"productName": "Monitor",
|
||||
"name": "prodmon",
|
||||
"productName": "prodmon",
|
||||
"version": "1.0.0",
|
||||
"description": "Desktop monitoring application",
|
||||
"main": "src/index.js",
|
||||
|
||||
1
src/assets/README.txt
Normal file
1
src/assets/README.txt
Normal file
@@ -0,0 +1 @@
|
||||
Place your app icon here as 'prodmon.png' (for development), and as 'prodmon.icns' (macOS) or 'prodmon.ico' (Windows) for packaging. The Electron app and packager will use this icon for branding.
|
||||
BIN
src/assets/prodmon.png
Normal file
BIN
src/assets/prodmon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
@@ -78,6 +78,43 @@ body {
|
||||
background-color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Model selector */
|
||||
.model-selector {
|
||||
margin-top: 1rem;
|
||||
padding-top: 1rem;
|
||||
border-top: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.model-selector label {
|
||||
display: block;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 500;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.model-selector select {
|
||||
width: 100%;
|
||||
padding: 0.5rem;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 0.375rem;
|
||||
background-color: var(--bg-primary);
|
||||
font-size: 0.875rem;
|
||||
color: var(--text-primary);
|
||||
cursor: pointer;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
|
||||
.model-selector select:hover {
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
|
||||
.model-selector select:focus {
|
||||
outline: none;
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.1);
|
||||
}
|
||||
|
||||
/* Stats and monitoring */
|
||||
.monitoring-stats {
|
||||
display: flex;
|
||||
|
||||
@@ -2,18 +2,26 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Screen Monitor Pro</title>
|
||||
<title>prodmon</title>
|
||||
<link rel="stylesheet" href="index.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-container">
|
||||
<div class="sidebar">
|
||||
<div class="app-header">
|
||||
<h1>Screen Monitor Pro</h1>
|
||||
<h1>prodmon</h1>
|
||||
<div class="status-indicator active">
|
||||
<span class="status-dot"></span>
|
||||
Monitoring Active
|
||||
</div>
|
||||
|
||||
<div class="model-selector">
|
||||
<label for="model-select">AI Model</label>
|
||||
<select id="model-select">
|
||||
<option value="gemini">Gemini</option>
|
||||
<option value="gemma">Local Model</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="monitoring-stats">
|
||||
@@ -217,6 +225,13 @@
|
||||
ipcRenderer.on("screenshot-error", (event, error) => {
|
||||
showNotification(`Error: ${error}`, "error");
|
||||
});
|
||||
|
||||
// Add model selection handler
|
||||
document.getElementById('model-select').addEventListener('change', (e) => {
|
||||
const selectedModel = e.target.value;
|
||||
ipcRenderer.send('model-changed', selectedModel);
|
||||
showNotification(`AI model changed to ${selectedModel}`);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
14
src/index.js
14
src/index.js
@@ -7,6 +7,9 @@ const { spawn, exec } = require("child_process");
|
||||
|
||||
const appName = require("../package.json").name;
|
||||
|
||||
// Add model state
|
||||
let currentModel = "gemini";
|
||||
|
||||
const screenshotsDir = path.join(
|
||||
os.homedir(),
|
||||
".cache",
|
||||
@@ -69,11 +72,18 @@ function createWindow() {
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false,
|
||||
},
|
||||
icon: path.join(__dirname, 'assets', 'prodmon.png'),
|
||||
});
|
||||
|
||||
mainWindow.loadFile("src/index.html");
|
||||
}
|
||||
|
||||
// Add model selection handler
|
||||
ipcMain.on("model-changed", (event, model) => {
|
||||
currentModel = model;
|
||||
console.log(`Model changed to: ${model}`);
|
||||
});
|
||||
|
||||
async function takeScreenshot() {
|
||||
try {
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
||||
@@ -93,12 +103,10 @@ async function takeScreenshot() {
|
||||
pythonScript,
|
||||
"--single",
|
||||
screenshotPath,
|
||||
"--prohibited",
|
||||
prohibitedPath,
|
||||
"--role",
|
||||
"developer",
|
||||
"--model",
|
||||
"gemini",
|
||||
currentModel,
|
||||
]);
|
||||
|
||||
let outputData = "";
|
||||
|
||||
Submodule src/logic updated: 8f656db8d9...f6c548d7de
Reference in New Issue
Block a user