groove-dev 0.27.75 → 0.27.77

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.
Files changed (33) hide show
  1. package/CLAUDE.md +7 -0
  2. package/node_modules/@groove-dev/cli/package.json +1 -1
  3. package/node_modules/@groove-dev/daemon/package.json +1 -1
  4. package/node_modules/@groove-dev/daemon/src/preview.js +14 -0
  5. package/node_modules/@groove-dev/daemon/src/process.js +4 -1
  6. package/node_modules/@groove-dev/gui/dist/assets/{index-CAT9SCJi.js → index-BbmPDhuW.js} +319 -323
  7. package/node_modules/@groove-dev/gui/dist/assets/index-kbR5tOHu.css +1 -0
  8. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  9. package/node_modules/@groove-dev/gui/package.json +1 -1
  10. package/node_modules/@groove-dev/gui/src/app.css +12 -0
  11. package/node_modules/@groove-dev/gui/src/components/chat/chat-input.jsx +32 -27
  12. package/node_modules/@groove-dev/gui/src/components/chat/chat-messages.jsx +26 -24
  13. package/node_modules/@groove-dev/gui/src/components/preview/preview-toolbar.jsx +34 -6
  14. package/node_modules/@groove-dev/gui/src/components/preview/preview-workspace.jsx +19 -4
  15. package/node_modules/@groove-dev/gui/src/components/preview/screenshot-overlay.jsx +91 -57
  16. package/package.json +1 -1
  17. package/packages/cli/package.json +1 -1
  18. package/packages/daemon/package.json +1 -1
  19. package/packages/daemon/src/preview.js +14 -0
  20. package/packages/daemon/src/process.js +4 -1
  21. package/packages/gui/dist/assets/{index-CAT9SCJi.js → index-BbmPDhuW.js} +319 -323
  22. package/packages/gui/dist/assets/index-kbR5tOHu.css +1 -0
  23. package/packages/gui/dist/index.html +2 -2
  24. package/packages/gui/package.json +1 -1
  25. package/packages/gui/src/app.css +12 -0
  26. package/packages/gui/src/components/chat/chat-input.jsx +32 -27
  27. package/packages/gui/src/components/chat/chat-messages.jsx +26 -24
  28. package/packages/gui/src/components/preview/preview-toolbar.jsx +34 -6
  29. package/packages/gui/src/components/preview/preview-workspace.jsx +19 -4
  30. package/packages/gui/src/components/preview/screenshot-overlay.jsx +91 -57
  31. package/welcome.png +0 -0
  32. package/node_modules/@groove-dev/gui/dist/assets/index-CVzz6zyb.css +0 -1
  33. package/packages/gui/dist/assets/index-CVzz6zyb.css +0 -1
package/CLAUDE.md CHANGED
@@ -263,3 +263,10 @@ Audit-driven release. Multi-agent orchestration system with 7 coordination layer
263
263
  - Dashboard: routing donut, cache panel, context health gauges
264
264
  - Monitor/QC agent mode (stay active, loop)
265
265
  - Distribution: demo video, HN launch, Twitter content
266
+
267
+ <!-- GROOVE:START -->
268
+ ## GROOVE Orchestration (auto-injected)
269
+ Active agents: 0
270
+ See AGENTS_REGISTRY.md for full agent state.
271
+ **Memory policy:** GROOVE manages project memory automatically. Do not read or write MEMORY.md or .groove/memory/ files directly.
272
+ <!-- GROOVE:END -->
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/cli",
3
- "version": "0.27.75",
3
+ "version": "0.27.77",
4
4
  "description": "GROOVE CLI — manage AI coding agents from your terminal",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/daemon",
3
- "version": "0.27.75",
3
+ "version": "0.27.77",
4
4
  "description": "GROOVE daemon — agent orchestration engine",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -168,6 +168,20 @@ export class PreviewService {
168
168
  if (!command) {
169
169
  return Promise.resolve({ launched: false, reason: 'no_command' });
170
170
  }
171
+ // If command references an npm script, verify it exists in package.json
172
+ const npmRunMatch = command.match(/npm\s+run\s+(\S+)/);
173
+ if (npmRunMatch) {
174
+ const scriptName = npmRunMatch[1];
175
+ const pkgPath = resolve(baseDir, 'package.json');
176
+ try {
177
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
178
+ if (!pkg.scripts || !pkg.scripts[scriptName]) {
179
+ return Promise.resolve({ launched: false, reason: 'no_dev_script' });
180
+ }
181
+ } catch {
182
+ return Promise.resolve({ launched: false, reason: 'no_dev_script' });
183
+ }
184
+ }
171
185
  const urlPattern = preview.urlPattern
172
186
  ? new RegExp(preview.urlPattern)
173
187
  : /https?:\/\/(localhost|127\.0\.0\.1|0\.0\.0\.0):\d+/;
@@ -114,6 +114,9 @@ CRITICAL — NEVER DO THESE:
114
114
  - NEVER kill the daemon process. No "kill <pid>", "pkill groove", "killall node", etc.
115
115
  - NEVER run "./promote.sh", "./promote-local.sh", or any publish/deploy script.
116
116
  - NEVER start long-running dev servers (vite dev, npm start, next dev, etc.).
117
+ - NEVER use 'git add -f' or 'git add --force' to bypass .gitignore. If a file is gitignored, it should stay gitignored. Only stage files that git tracks normally. If .gitignore prevents staging, report it in your output — do NOT force-add.
118
+ - NEVER use 'git push --force' or 'git push -f'. Force-pushing can destroy shared history.
119
+ - NEVER modify .gitignore to include files that were previously excluded.
117
120
 
118
121
  Restarting the daemon destroys ALL other agents currently running in other teams. Verification is done via "npm run build" and "npm test", which exit cleanly. If code changes require a daemon restart to take effect, report that in your output so the user can restart manually — do NOT do it yourself.
119
122
 
@@ -1161,7 +1164,7 @@ For normal file edits within your scope, proceed without review.
1161
1164
  const workingDir = plan.workingDir;
1162
1165
  preview.launch(teamId, workingDir, plan.preview).then((result) => {
1163
1166
  if (!result.launched) {
1164
- const intentionalSkips = new Set(['no_preview', 'cli', 'none']);
1167
+ const intentionalSkips = new Set(['no_preview', 'cli', 'none', 'no_command', 'no_dev_script']);
1165
1168
  if (intentionalSkips.has(result.reason)) {
1166
1169
  console.log(`[Groove] Preview for team ${teamId} intentionally skipped: ${result.reason}`);
1167
1170
  return;