vibemon 1.9.0 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,8 +10,17 @@ See at a glance what your AI assistant is doing — thinking, working, or waitin
10
10
 
11
11
  ![Demo](https://raw.githubusercontent.com/nalbam/vibemon-app/main/images/demo.gif)
12
12
 
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ npx vibemon
17
+ ```
18
+
19
+ The app launches in the system tray and listens on `http://127.0.0.1:19280`.
20
+
13
21
  ## Supported Tools
14
22
 
23
+ - **Apto** - Personal AI coding assistant
15
24
  - **[Claude Code](https://claude.ai/code)** - Anthropic's AI coding assistant
16
25
  - **[Kiro](https://kiro.dev/)** - AWS's AI coding assistant
17
26
  - **[OpenClaw](https://openclaw.ai/)** - Open-source computer use agent
@@ -22,18 +31,19 @@ See at a glance what your AI assistant is doing — thinking, working, or waitin
22
31
  - **Always on Top** - Always displayed above other windows
23
32
  - **System Tray** - Quick control from the menu bar
24
33
  - **Multi-window** - One window per project (up to 5)
34
+ - **Snap to Corner** - Auto-snaps near screen edges
35
+ - **Click to Focus** - Switch to iTerm2/Ghostty tab (macOS)
36
+ - **Open at Login** - Auto-start on macOS login
25
37
  - **HTTP API** - Easy integration with hooks
26
- - **Auto-launch** - Hook scripts auto-start via `npx vibemon`
27
38
 
28
39
  ## Documentation
29
40
 
30
- For installation and setup instructions, visit **[vibemon.io/docs](https://vibemon.io/docs)**.
41
+ For full documentation, visit **[vibemon.io/docs](https://vibemon.io/docs)**.
31
42
 
32
43
  ## Links
33
44
 
34
45
  - [Homepage](https://nalbam.github.io/vibemon-app/)
35
46
  - [GitHub Repository](https://github.com/nalbam/vibemon-app)
36
- - [Full Documentation](https://github.com/nalbam/vibemon-app#readme)
37
47
 
38
48
  ## License
39
49
 
@@ -140,6 +140,12 @@ class HttpServer {
140
140
  const route = `${req.method} ${req.url}`;
141
141
 
142
142
  switch (route) {
143
+ case 'GET /':
144
+ await this.handleGetDashboard(res);
145
+ break;
146
+ case 'GET /dashboard-data':
147
+ this.handleGetDashboardData(res);
148
+ break;
143
149
  case 'POST /status':
144
150
  await this.handlePostStatus(req, res);
145
151
  break;
@@ -559,6 +565,36 @@ class HttpServer {
559
565
  });
560
566
  }
561
567
 
568
+ handleGetDashboardData(res) {
569
+ const windows = this.windowManager.getWindows();
570
+ const windowList = Object.entries(windows).map(([projectId, info]) => ({
571
+ project: projectId,
572
+ state: info.state ? info.state.state : 'unknown'
573
+ }));
574
+
575
+ sendJson(res, 200, {
576
+ health: 'ok',
577
+ windowCount: windowList.length,
578
+ windowMode: this.windowManager.getWindowMode(),
579
+ lockMode: this.windowManager.getLockMode(),
580
+ lockedProject: this.windowManager.getLockedProject(),
581
+ windows: windowList
582
+ });
583
+ }
584
+
585
+ async handleGetDashboard(res) {
586
+ const dashboardPath = path.join(__dirname, '..', 'dashboard.html');
587
+
588
+ try {
589
+ const html = await fsPromises.readFile(dashboardPath, 'utf8');
590
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
591
+ res.end(html);
592
+ } catch (err) {
593
+ console.error('Failed to load dashboard page:', err.message);
594
+ sendError(res, 500, 'Failed to load dashboard page');
595
+ }
596
+ }
597
+
562
598
  async handleGetStatsPage(res) {
563
599
  const statsHtmlPath = path.join(__dirname, '..', 'stats.html');
564
600
 
@@ -2,7 +2,7 @@
2
2
  * System tray management for Vibe Monitor
3
3
  */
4
4
 
5
- const { Tray, Menu, nativeImage, BrowserWindow, ipcMain } = require('electron');
5
+ const { Tray, Menu, nativeImage, BrowserWindow, ipcMain, shell } = require('electron');
6
6
  const { createCanvas } = require('canvas');
7
7
  const fs = require('fs');
8
8
  const path = require('path');
@@ -619,6 +619,10 @@ class TrayManager {
619
619
  label: `Version: ${this.app.getVersion()}`,
620
620
  enabled: false
621
621
  },
622
+ {
623
+ label: 'Docs',
624
+ click: () => shell.openExternal('https://vibemon.io/docs')
625
+ },
622
626
  { type: 'separator' },
623
627
  {
624
628
  label: 'Quit',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibemon",
3
- "version": "1.9.0",
3
+ "version": "1.9.2",
4
4
  "description": "AI assistant status monitor",
5
5
  "main": "main.js",
6
6
  "bin": {
@@ -61,7 +61,7 @@
61
61
 
62
62
  "ACTIVE_STATES": ["thinking", "planning", "working", "notification", "packing", "alert"],
63
63
 
64
- "VALID_STATES": ["start", "idle", "thinking", "planning", "working", "packing", "notification", "sleep", "done", "alert"],
64
+ "VALID_STATES": ["start", "idle", "thinking", "planning", "working", "packing", "notification", "done", "sleep", "alert"],
65
65
 
66
66
  "CHARACTER_NAMES": ["apto", "clawd", "kiro", "claw"],
67
67