@nickmeriano/task 0.1.1 → 0.2.0

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
@@ -35,7 +35,7 @@ task list --needs-human # what's blocked on a person
35
35
  task start 1 # → in_progress
36
36
  task done 1 # → done
37
37
  task comment 1 "shipped in #42" --author claude
38
- task serve # kanban + table UI at localhost:4400, live
38
+ task serve # opens the kanban + table UI, live
39
39
  ```
40
40
 
41
41
  - Ids are `PREFIX-12` or just `12`; the prefix comes from `task init --prefix`.
@@ -47,6 +47,9 @@ task serve # kanban + table UI at localhost:4400, live
47
47
  - Every command takes `--json` — that's the agent interface.
48
48
  - Commands work from any subdirectory; the CLI walks up to find `.task/` the
49
49
  way git finds `.git`.
50
+ - `task serve` opens your browser on the board (`--no-open` doesn't) and takes
51
+ the next free port when 4400 is busy, so a server you left running elsewhere
52
+ can't stop you — `--strict-port` fails on a taken port instead.
50
53
  - `task serve` is the one command that also looks *down*: run it at a monorepo
51
54
  root and it serves every nested board from one server, with a board switcher
52
55
  in the header. Run it inside a package and you get just that board. Every
package/dist/cli.js CHANGED
@@ -7,6 +7,7 @@
7
7
  // task list --status todo,in_progress
8
8
  // task start TASK-3 && task done TASK-3
9
9
  // task serve
10
+ import { spawn } from "node:child_process";
10
11
  import { readFileSync } from "node:fs";
11
12
  import { basename, join } from "node:path";
12
13
  import process from "node:process";
@@ -23,6 +24,8 @@ process.on("warning", (warning) => {
23
24
  });
24
25
  const VERSION = "0.1.0";
25
26
  const DEFAULT_PORT = 4400;
27
+ /** How far past the requested port to look before giving up. */
28
+ const PORT_ATTEMPTS = 20;
26
29
  // Every valueless flag has to be listed here: an unregistered one swallows the
27
30
  // next argv token, so `task list --needs-human todo` would silently eat `todo`.
28
31
  const BOOLEAN_FLAGS = new Set([
@@ -33,6 +36,9 @@ const BOOLEAN_FLAGS = new Set([
33
36
  "yes",
34
37
  "needs-human",
35
38
  "no-needs-human",
39
+ "open",
40
+ "no-open",
41
+ "strict-port",
36
42
  ]);
37
43
  function parseArgs(argv) {
38
44
  const positional = [];
@@ -293,6 +299,58 @@ function cmdDelete(args) {
293
299
  store.delete(number);
294
300
  console.log(`deleted ${store.displayId(number)}`);
295
301
  }
302
+ /**
303
+ * Bind the first free port at or after `first`, the way dev servers do: a board
304
+ * that refuses to start because something else (often an older `task serve`)
305
+ * owns 4400 is a worse default than one that quietly moves over. Pass
306
+ * `--strict-port` when the port is part of a contract and moving is the bug.
307
+ */
308
+ function listen(server, first, strict, onReady) {
309
+ let port = first;
310
+ const onError = (error) => {
311
+ if (error.code !== "EADDRINUSE")
312
+ fail(error.message);
313
+ if (strict) {
314
+ fail(`port ${port} is in use — try --port <n>, or drop --strict-port to take the next free one`);
315
+ }
316
+ if (port - first + 1 >= PORT_ATTEMPTS) {
317
+ fail(`ports ${first}-${port} are all in use — try --port <n>`);
318
+ }
319
+ // Safe to re-listen on the same server: a bind that failed never took, so
320
+ // it is still closed.
321
+ server.listen(++port);
322
+ };
323
+ server.on("error", onError);
324
+ // One 'listening' listener for every attempt. Passing the callback to
325
+ // `listen(port, cb)` instead would queue one more per failed attempt, and
326
+ // they'd all fire on the bind that finally succeeds.
327
+ server.once("listening", () => {
328
+ server.off("error", onError);
329
+ server.on("error", (error) => fail(error.message));
330
+ onReady(port);
331
+ });
332
+ server.listen(port);
333
+ }
334
+ /**
335
+ * Hand a url to the OS and forget about it. Every way this fails — no opener
336
+ * installed, no display, a container — is a machine that was never going to
337
+ * show a browser, which is not an error worth interrupting the server for.
338
+ */
339
+ function openBrowser(url) {
340
+ const [command, commandArgs] = process.platform === "darwin"
341
+ ? ["open", [url]]
342
+ : process.platform === "win32"
343
+ ? ["cmd", ["/c", "start", "", url]]
344
+ : ["xdg-open", [url]];
345
+ try {
346
+ const child = spawn(command, commandArgs, { stdio: "ignore", detached: true });
347
+ child.on("error", () => { });
348
+ child.unref();
349
+ }
350
+ catch {
351
+ /* ignore */
352
+ }
353
+ }
296
354
  function cmdServe(args) {
297
355
  // Serve is the one command that's monorepo-aware: anchor at the nearest
298
356
  // board like every other command, but if there is none, serve whatever
@@ -302,16 +360,14 @@ function cmdServe(args) {
302
360
  if (boards.length === 0) {
303
361
  fail("no .task directory found in this directory, any parent, or below — run `task init` first");
304
362
  }
305
- const port = Number(str(args.flags, "port") ?? DEFAULT_PORT);
306
- if (!Number.isInteger(port) || port <= 0)
363
+ const requested = Number(str(args.flags, "port") ?? DEFAULT_PORT);
364
+ if (!Number.isInteger(requested) || requested <= 0) {
307
365
  fail(`invalid port: ${str(args.flags, "port")}`);
366
+ }
367
+ // CI has no browser to open and no one watching it try.
368
+ const shouldOpen = !args.flags["no-open"] && !process.env.CI;
308
369
  const server = createTaskServer(serveRoot);
309
- server.on("error", (error) => {
310
- if (error.code === "EADDRINUSE")
311
- fail(`port ${port} is in use — try --port <n>`);
312
- fail(error.message);
313
- });
314
- server.listen(port, () => {
370
+ listen(server, requested, Boolean(args.flags["strict-port"]), (port) => {
315
371
  const boardName = (root) => JSON.parse(readFileSync(join(root, TASK_DIR, CONFIG_FILE), "utf8"))
316
372
  .name;
317
373
  if (boards.length === 1) {
@@ -322,8 +378,11 @@ function cmdServe(args) {
322
378
  for (const board of boards)
323
379
  console.log(` ${board.id} ${boardName(board.root)}`);
324
380
  }
325
- console.log(` http://localhost:${port}`);
381
+ const url = `http://localhost:${port}`;
382
+ console.log(` ${url}${port === requested ? "" : ` (${requested} was in use)`}`);
326
383
  console.log(`Live: edits from any terminal or agent show up as they happen. Ctrl-C to stop.`);
384
+ if (shouldOpen)
385
+ openBrowser(url);
327
386
  });
328
387
  }
329
388
  // ── Help + dispatch ──────────────────────────────────────────────────────────
@@ -349,9 +408,13 @@ Usage
349
408
  task comment <id> <text> [--author <who>]
350
409
  task delete <id>
351
410
  task whoami who your comments are attributed to
352
- task serve [--port <n>] board + table UI with live updates (default port ${DEFAULT_PORT});
353
- serves every board at or below here in a
354
- monorepo the header becomes a board switcher
411
+ task serve [--port <n>] [--no-open] [--strict-port]
412
+ board + table UI with live updates, opened in
413
+ your browser (default port ${DEFAULT_PORT}; taken ports
414
+ step up to the next free one, --strict-port
415
+ fails instead). Serves every board at or below
416
+ here — in a monorepo the header becomes a
417
+ board switcher
355
418
 
356
419
  Values
357
420
  <id> TASK-12, or just 12
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nickmeriano/task",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "A task manager that lives in your repo — SQLite in .task/, a zero-dependency CLI for humans and agents, and a live kanban/table UI via `task serve`.",
6
6
  "license": "MIT",
package/skill/SKILL.md CHANGED
@@ -97,10 +97,12 @@ and the same rule applies — join an existing one rather than coining a variant
97
97
 
98
98
  ## The UI
99
99
 
100
- `task serve` starts the board (kanban + table) at `http://localhost:4400`.
101
- It updates live as you run CLI commands no refresh needed. Offer to start
102
- it when the user wants to see the state of the work; don't start it unasked
103
- in a session where nobody will look at it.
100
+ `task serve` starts the board (kanban + table) at `http://localhost:4400` and
101
+ opens it in the user's browser pass `--no-open` when you start it for your
102
+ own use. If 4400 is taken it moves to the next free port, so read the url it
103
+ prints rather than assuming 4400. It updates live as you run CLI commands — no
104
+ refresh needed. Offer to start it when the user wants to see the state of the
105
+ work; don't start it unasked in a session where nobody will look at it.
104
106
 
105
107
  In a monorepo, `task serve` run at the root serves every nested board (each
106
108
  package's `.task/`) from one server — the header becomes a board switcher.
package/src/cli.ts CHANGED
@@ -8,7 +8,9 @@
8
8
  // task start TASK-3 && task done TASK-3
9
9
  // task serve
10
10
 
11
+ import { spawn } from "node:child_process"
11
12
  import { readFileSync } from "node:fs"
13
+ import type { Server } from "node:http"
12
14
  import { basename, join } from "node:path"
13
15
  import process from "node:process"
14
16
  import { resolveAuthor } from "./author.js"
@@ -25,6 +27,8 @@ process.on("warning", (warning) => {
25
27
 
26
28
  const VERSION = "0.1.0"
27
29
  const DEFAULT_PORT = 4400
30
+ /** How far past the requested port to look before giving up. */
31
+ const PORT_ATTEMPTS = 20
28
32
 
29
33
  // ── Argument parsing: positionals + --flag value / --flag ────────────────────
30
34
 
@@ -43,6 +47,9 @@ const BOOLEAN_FLAGS = new Set([
43
47
  "yes",
44
48
  "needs-human",
45
49
  "no-needs-human",
50
+ "open",
51
+ "no-open",
52
+ "strict-port",
46
53
  ])
47
54
 
48
55
  function parseArgs(argv: string[]): Args {
@@ -296,6 +303,59 @@ function cmdDelete(args: Args): void {
296
303
  console.log(`deleted ${store.displayId(number)}`)
297
304
  }
298
305
 
306
+ /**
307
+ * Bind the first free port at or after `first`, the way dev servers do: a board
308
+ * that refuses to start because something else (often an older `task serve`)
309
+ * owns 4400 is a worse default than one that quietly moves over. Pass
310
+ * `--strict-port` when the port is part of a contract and moving is the bug.
311
+ */
312
+ function listen(server: Server, first: number, strict: boolean, onReady: (port: number) => void): void {
313
+ let port = first
314
+ const onError = (error: NodeJS.ErrnoException): void => {
315
+ if (error.code !== "EADDRINUSE") fail(error.message)
316
+ if (strict) {
317
+ fail(`port ${port} is in use — try --port <n>, or drop --strict-port to take the next free one`)
318
+ }
319
+ if (port - first + 1 >= PORT_ATTEMPTS) {
320
+ fail(`ports ${first}-${port} are all in use — try --port <n>`)
321
+ }
322
+ // Safe to re-listen on the same server: a bind that failed never took, so
323
+ // it is still closed.
324
+ server.listen(++port)
325
+ }
326
+ server.on("error", onError)
327
+ // One 'listening' listener for every attempt. Passing the callback to
328
+ // `listen(port, cb)` instead would queue one more per failed attempt, and
329
+ // they'd all fire on the bind that finally succeeds.
330
+ server.once("listening", () => {
331
+ server.off("error", onError)
332
+ server.on("error", (error: Error) => fail(error.message))
333
+ onReady(port)
334
+ })
335
+ server.listen(port)
336
+ }
337
+
338
+ /**
339
+ * Hand a url to the OS and forget about it. Every way this fails — no opener
340
+ * installed, no display, a container — is a machine that was never going to
341
+ * show a browser, which is not an error worth interrupting the server for.
342
+ */
343
+ function openBrowser(url: string): void {
344
+ const [command, commandArgs] =
345
+ process.platform === "darwin"
346
+ ? ["open", [url]]
347
+ : process.platform === "win32"
348
+ ? ["cmd", ["/c", "start", "", url]]
349
+ : ["xdg-open", [url]]
350
+ try {
351
+ const child = spawn(command, commandArgs, { stdio: "ignore", detached: true })
352
+ child.on("error", () => {})
353
+ child.unref()
354
+ } catch {
355
+ /* ignore */
356
+ }
357
+ }
358
+
299
359
  function cmdServe(args: Args): void {
300
360
  // Serve is the one command that's monorepo-aware: anchor at the nearest
301
361
  // board like every other command, but if there is none, serve whatever
@@ -305,14 +365,14 @@ function cmdServe(args: Args): void {
305
365
  if (boards.length === 0) {
306
366
  fail("no .task directory found in this directory, any parent, or below — run `task init` first")
307
367
  }
308
- const port = Number(str(args.flags, "port") ?? DEFAULT_PORT)
309
- if (!Number.isInteger(port) || port <= 0) fail(`invalid port: ${str(args.flags, "port")}`)
368
+ const requested = Number(str(args.flags, "port") ?? DEFAULT_PORT)
369
+ if (!Number.isInteger(requested) || requested <= 0) {
370
+ fail(`invalid port: ${str(args.flags, "port")}`)
371
+ }
372
+ // CI has no browser to open and no one watching it try.
373
+ const shouldOpen = !args.flags["no-open"] && !process.env.CI
310
374
  const server = createTaskServer(serveRoot)
311
- server.on("error", (error: NodeJS.ErrnoException) => {
312
- if (error.code === "EADDRINUSE") fail(`port ${port} is in use — try --port <n>`)
313
- fail(error.message)
314
- })
315
- server.listen(port, () => {
375
+ listen(server, requested, Boolean(args.flags["strict-port"]), (port) => {
316
376
  const boardName = (root: string): string =>
317
377
  (JSON.parse(readFileSync(join(root, TASK_DIR, CONFIG_FILE), "utf8")) as { name: string })
318
378
  .name
@@ -322,8 +382,10 @@ function cmdServe(args: Args): void {
322
382
  console.log(`${boards.length} boards · task board`)
323
383
  for (const board of boards) console.log(` ${board.id} ${boardName(board.root)}`)
324
384
  }
325
- console.log(` http://localhost:${port}`)
385
+ const url = `http://localhost:${port}`
386
+ console.log(` ${url}${port === requested ? "" : ` (${requested} was in use)`}`)
326
387
  console.log(`Live: edits from any terminal or agent show up as they happen. Ctrl-C to stop.`)
388
+ if (shouldOpen) openBrowser(url)
327
389
  })
328
390
  }
329
391
 
@@ -351,9 +413,13 @@ Usage
351
413
  task comment <id> <text> [--author <who>]
352
414
  task delete <id>
353
415
  task whoami who your comments are attributed to
354
- task serve [--port <n>] board + table UI with live updates (default port ${DEFAULT_PORT});
355
- serves every board at or below here in a
356
- monorepo the header becomes a board switcher
416
+ task serve [--port <n>] [--no-open] [--strict-port]
417
+ board + table UI with live updates, opened in
418
+ your browser (default port ${DEFAULT_PORT}; taken ports
419
+ step up to the next free one, --strict-port
420
+ fails instead). Serves every board at or below
421
+ here — in a monorepo the header becomes a
422
+ board switcher
357
423
 
358
424
  Values
359
425
  <id> TASK-12, or just 12