@tenonhq/dovetail-core 0.0.123 → 0.0.124

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.
@@ -363,7 +363,8 @@ async function initScopesCommand(args) {
363
363
  Logger_1.logger.warn(failCount + " scope(s) failed — check errors above");
364
364
  }
365
365
  Logger_1.logger.info("Manifests: dove.manifest.<scope>.json");
366
- Logger_1.logger.success("Run 'npx dove watch' to start development");
366
+ // Headless next step only — the file watcher is human-only (TenonHQ/Dovetail#155).
367
+ Logger_1.logger.success("Next: edit locally, then 'npx dove push --diff <branch>' to sync the changed files");
367
368
  }
368
369
  catch (e) {
369
370
  Logger_1.logger.error("Error initializing scopes: " + e);
@@ -375,7 +375,14 @@ async function runInit(options) {
375
375
  Logger_1.logger.warn(" Setup completed with errors. Review the output above.");
376
376
  }
377
377
  else {
378
- Logger_1.logger.success(chalk_1.default.green(" Setup complete!") + " Run " + chalk_1.default.cyan("dove watch") + " to start.");
378
+ // Headless next steps only — the file watcher is human-only and hidden from
379
+ // Claude-facing output (TenonHQ/Dovetail#155).
380
+ Logger_1.logger.success(chalk_1.default.green(" Setup complete!") +
381
+ " Run " +
382
+ chalk_1.default.cyan("dove status") +
383
+ ", then " +
384
+ chalk_1.default.cyan("dove refresh") +
385
+ " to pull the manifest and files.");
379
386
  }
380
387
  Logger_1.logger.info("");
381
388
  }
@@ -447,7 +454,8 @@ async function runLogin(options) {
447
454
  Logger_1.logger.info("");
448
455
  Logger_1.logger.info("You can now use:");
449
456
  Logger_1.logger.info(" dove init — Initialize a new project");
450
- Logger_1.logger.info(" dove watch — Watch for changes");
457
+ Logger_1.logger.info(" dove refresh — Pull the manifest + new files");
458
+ Logger_1.logger.info(" dove push --diff main — Push the files changed vs a branch");
451
459
  Logger_1.logger.info(" dove status — Check instance connection");
452
460
  Logger_1.logger.info("");
453
461
  }
@@ -4,6 +4,39 @@
4
4
  // never lists `watch` / `w` / `watchAllScopes`, and all three spellings still
5
5
  // route to the watch handler. Mocks mirror commanderStrict.test.ts — the parser
6
6
  // is under test, not the commands, which would hit ServiceNow.
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
7
40
  var __importDefault = (this && this.__importDefault) || function (mod) {
8
41
  return (mod && mod.__esModule) ? mod : { "default": mod };
9
42
  };
@@ -55,6 +88,8 @@ jest.mock("../clickupCommands", () => ({
55
88
  clickupListsCommand: jest.fn(),
56
89
  }));
57
90
  // --- Imports (after mocks) ---
91
+ const fs = __importStar(require("fs"));
92
+ const path = __importStar(require("path"));
58
93
  const yargs_1 = __importDefault(require("yargs/yargs"));
59
94
  const commander_1 = require("../commander");
60
95
  const allScopesCommands_1 = require("../allScopesCommands");
@@ -144,3 +179,18 @@ describe("dove watch stays wired for humans", function () {
144
179
  expect(args.port).toBe(4000);
145
180
  });
146
181
  });
182
+ // The command index is not the only surface Claude reads: `dove init`, `dove login`
183
+ // and `dove initScopes` print next-step hints too. None of them may point at the
184
+ // watcher (#155). Source-level so the check needs no instance and no prompt mocks.
185
+ describe("next-step hints never recommend the watcher", function () {
186
+ const HINT_SOURCES = ["../initSystem/orchestrator.ts", "../allScopesCommands.ts"];
187
+ const USER_FACING_WATCH_HINT = /\blogger\.(info|success|warn)\([^;]*\bdove\b[^;]*\bwatch\b/;
188
+ it.each(HINT_SOURCES)("%s prints only headless next steps", function (rel) {
189
+ const source = fs.readFileSync(path.join(__dirname, rel), "utf8");
190
+ expect(source.length).toBeGreaterThan(0);
191
+ const offenders = source.split("\n").filter(function (line) {
192
+ return USER_FACING_WATCH_HINT.test(line);
193
+ });
194
+ expect(offenders).toEqual([]);
195
+ });
196
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenonhq/dovetail-core",
3
- "version": "0.0.123",
3
+ "version": "0.0.124",
4
4
  "description": "Next-gen file syncer",
5
5
  "license": "GPL-3.0",
6
6
  "main": "./dist/index.js",
@@ -1,7 +1,29 @@
1
1
  {
2
2
  "$schema": "dovetail-manifest/v1",
3
- "generated_at": "2026-10-05T19:26:26.993Z",
3
+ "generated_at": "2026-10-06T16:25:11.503Z",
4
4
  "events": [
5
+ {
6
+ "$schema": "dovetail-release-event/v1",
7
+ "event_id": "dovetail-core@0.0.123",
8
+ "package": "@tenonhq/dovetail-core",
9
+ "version": "0.0.123",
10
+ "prev_version": "0.0.122",
11
+ "published_at": "2026-10-06T16:25:11.496Z",
12
+ "git": {
13
+ "sha": "0927c64611ab1901d9ce6b6cbba15cb17eee684e",
14
+ "tag": "dovetail-core@0.0.123"
15
+ },
16
+ "semver_bump": "patch",
17
+ "commits": [
18
+ {
19
+ "sha": "0927c6461",
20
+ "subject": "fix(core): dove create sys_update_set routes through the scope-correct createUpdateSet op (#306)",
21
+ "pr": 306
22
+ }
23
+ ],
24
+ "exports_delta": null,
25
+ "narrative": null
26
+ },
5
27
  {
6
28
  "$schema": "dovetail-release-event/v1",
7
29
  "event_id": "dovetail-types@0.0.22",
@@ -1268,27 +1290,6 @@
1268
1290
  ],
1269
1291
  "exports_delta": null,
1270
1292
  "narrative": null
1271
- },
1272
- {
1273
- "$schema": "dovetail-release-event/v1",
1274
- "event_id": "dovetail-mcp@0.0.33",
1275
- "package": "@tenonhq/dovetail-mcp",
1276
- "version": "0.0.33",
1277
- "prev_version": "0.0.32",
1278
- "published_at": "2026-08-31T21:34:20.896Z",
1279
- "git": {
1280
- "sha": "81ab50a4e0fc105445ffc6d6983bc93a1483859d",
1281
- "tag": "dovetail-mcp@0.0.33"
1282
- },
1283
- "semver_bump": "patch",
1284
- "commits": [
1285
- {
1286
- "sha": "025e4eb4d",
1287
- "subject": "chore(release): publish 2 packages [skip ci]"
1288
- }
1289
- ],
1290
- "exports_delta": null,
1291
- "narrative": null
1292
1293
  }
1293
1294
  ]
1294
1295
  }