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 = {
|
module.exports = {
|
||||||
packagerConfig: {
|
packagerConfig: {
|
||||||
asar: true,
|
asar: true,
|
||||||
|
icon: 'src/assets/prodmon',
|
||||||
},
|
},
|
||||||
rebuildConfig: {},
|
rebuildConfig: {},
|
||||||
makers: [
|
makers: [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "monitor",
|
"name": "prodmon",
|
||||||
"productName": "Monitor",
|
"productName": "prodmon",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Desktop monitoring application",
|
"description": "Desktop monitoring application",
|
||||||
"main": "src/index.js",
|
"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);
|
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 */
|
/* Stats and monitoring */
|
||||||
.monitoring-stats {
|
.monitoring-stats {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -2,18 +2,26 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>Screen Monitor Pro</title>
|
<title>prodmon</title>
|
||||||
<link rel="stylesheet" href="index.css" />
|
<link rel="stylesheet" href="index.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="app-header">
|
<div class="app-header">
|
||||||
<h1>Screen Monitor Pro</h1>
|
<h1>prodmon</h1>
|
||||||
<div class="status-indicator active">
|
<div class="status-indicator active">
|
||||||
<span class="status-dot"></span>
|
<span class="status-dot"></span>
|
||||||
Monitoring Active
|
Monitoring Active
|
||||||
</div>
|
</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>
|
||||||
|
|
||||||
<div class="monitoring-stats">
|
<div class="monitoring-stats">
|
||||||
@@ -217,6 +225,13 @@
|
|||||||
ipcRenderer.on("screenshot-error", (event, error) => {
|
ipcRenderer.on("screenshot-error", (event, error) => {
|
||||||
showNotification(`Error: ${error}`, "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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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;
|
const appName = require("../package.json").name;
|
||||||
|
|
||||||
|
// Add model state
|
||||||
|
let currentModel = "gemini";
|
||||||
|
|
||||||
const screenshotsDir = path.join(
|
const screenshotsDir = path.join(
|
||||||
os.homedir(),
|
os.homedir(),
|
||||||
".cache",
|
".cache",
|
||||||
@@ -69,11 +72,18 @@ function createWindow() {
|
|||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
contextIsolation: false,
|
contextIsolation: false,
|
||||||
},
|
},
|
||||||
|
icon: path.join(__dirname, 'assets', 'prodmon.png'),
|
||||||
});
|
});
|
||||||
|
|
||||||
mainWindow.loadFile("src/index.html");
|
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() {
|
async function takeScreenshot() {
|
||||||
try {
|
try {
|
||||||
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
||||||
@@ -93,12 +103,10 @@ async function takeScreenshot() {
|
|||||||
pythonScript,
|
pythonScript,
|
||||||
"--single",
|
"--single",
|
||||||
screenshotPath,
|
screenshotPath,
|
||||||
"--prohibited",
|
|
||||||
prohibitedPath,
|
|
||||||
"--role",
|
"--role",
|
||||||
"developer",
|
"developer",
|
||||||
"--model",
|
"--model",
|
||||||
"gemini",
|
currentModel,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let outputData = "";
|
let outputData = "";
|
||||||
|
|||||||
Submodule src/logic updated: 8f656db8d9...f6c548d7de
Reference in New Issue
Block a user