@webappwiz/arbor 0.0.29 → 0.0.31

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
@@ -105,7 +105,8 @@ configures none.
105
105
 
106
106
  A merge onto trunk ends by recommending what to do next: the open todo highest
107
107
  on the list that came up in the task that landed, since its context is
108
- freshest, or failing that the open todo highest on the list, plus any todo older than `todoStalenessMs` (30 days) offered for
108
+ freshest, then one sharing a tag with the todos the task settled, the same
109
+ area of work, or failing that the open todo highest on the list, plus any todo older than `todoStalenessMs` (30 days) offered for
109
110
  removal instead. The todos the task
110
111
  took up, with `--todo` or `todo take`, leave the list, since that work is now
111
112
  done; release one first to keep what is left of it.
@@ -148,7 +149,7 @@ down the listing; a record whose worktree vanished shows as `orphaned`.
148
149
 
149
150
  `--files` adds, under each task, every path it has changed (committed or
150
151
  not) and every path its `ARBOR.md` plans under `## Files` that it has not
151
- touched yet. This is the overlap check an agent runs before starting: its own
152
+ touched yet. This is the overlap check an agent runs once it has planned: its own
152
153
  list of files against everyone else's.
153
154
 
154
155
  ```
@@ -229,24 +230,34 @@ the only thing that remembers a task landed at all. The last 1000 are kept
229
230
  The todos and the tasks in a browser, on `http://localhost:4269`, reloading
230
231
  themselves as anything changes. Built for a phone first.
231
232
 
233
+ One page, tasks above the todos.
234
+
232
235
  Todos are cards in list order: drag one to reorder the list (a short press
233
236
  on a phone, or Space on its grip and the arrow keys), or tap it to reword,
234
237
  attach files to, or remove. A card shows its subject, two lines of its
235
- detail rendered as markdown, and badges for its files and staleness, and a green edge with
238
+ detail rendered as markdown, and badges for its files, tags and staleness, and a green edge with
236
239
  "Taken by <task>" once a task has taken it; its
237
240
  `#7` copies `[ARBOR TODO #7]`, which the agent skill reads as that todo, for
238
241
  pasting into a chat. An opened todo shows its detail rendered, with Write and
239
242
  Preview to switch between the markdown and how it reads. Typing `@` in a todo offers the files and
240
243
  directories in the main tree, tracked or new but not ignored, and writes the
241
244
  one picked as `@path/from/root`; picking a directory keeps the list open on
242
- what is inside.
245
+ what is inside. An opened todo's tags are edited there too, comma separated,
246
+ and its `#7` copies the same reference as the card's.
247
+
248
+ Tasks lists every task with a bar for its progress through its plan, counted
249
+ from the checkboxes under `## Done` and `## Next` in its `ARBOR.md`, flagging
250
+ only an escalated or broken status; tapping one opens its details and whole
251
+ plan in a dialog.
243
252
 
244
- Tasks lists every task with its progress through its plan, flagging only an
245
- escalated or broken status; tapping one opens its details and whole plan in a dialog.
253
+ A row of tags over the todos filters them, the way a mail client filters by
254
+ label: All, then every tag a todo has. Tapping one there, or on a card, shows
255
+ only its todos. Dragging a card while filtered moves it to the place in the
256
+ whole list of the card it is dropped on, so the todos hidden between them
257
+ shift around it.
246
258
 
247
- On a phone the tabs sit along the bottom, in reach of a thumb; on anything
248
- wider they run down a sidebar. If the server stops answering, the header says
249
- it is offline, since what the page shows may be stale.
259
+ If the server stops answering, the header says it is offline, since what the
260
+ page shows may be stale.
250
261
 
251
262
  Todo writes are the same functions as `arbor todo add`, `update` and
252
263
  `remove`. Questions are answered in the agent's chat, not here. Merging,
@@ -333,7 +344,7 @@ imports, a signature changed on one side and its callers on the other) and
333
344
  unreliable when both sides restructured the same logic, because then there is no
334
345
  correct merge, only a decision.
335
346
 
336
- ### `arbor todo add <subject> [text] [--position <n>] [--file <path>]`, `arbor todo list [--json]`, `arbor todo show <id> [--json]`, `arbor todo update <id> [text] [--subject <subject>] [--position <n>] [--file <path>] [--remove-file <name>]`, `arbor todo take <id...>`, `arbor todo release <id...>`, `arbor todo remove <id>`
347
+ ### `arbor todo add <subject> [text] [--position <n>] [--file <path>] [--tag <tag>]`, `arbor todo list [--json] [--open] [--tag <tag>]`, `arbor todo show <id> [--json]`, `arbor todo update <id> [text] [--subject <subject>] [--position <n>] [--file <path>] [--remove-file <name>] [--tag <tag>] [--remove-tag <tag>]`, `arbor todo tags [--json]`, `arbor todo take <id...>`, `arbor todo release <id...>`, `arbor todo remove <id>`
337
348
 
338
349
  Work deferred for later. When something outside the task comes up (a bug next
339
350
  door, a follow-up the reviewer asked for, a question that turns out to be its
@@ -360,6 +371,8 @@ run from a worktree, adds them to the task already under way, all or none.
360
371
  A task can hold any number. `release` puts them back on the list, from a
361
372
  worktree only its own task's: a task landing with one half done rewords it to
362
373
  what is left with `update`, then releases it, so the merge leaves it open.
374
+ `list --open` shows only those no task holds, which is what an agent
375
+ looking for work to pick up wants.
363
376
  `update` rewords one, its detail as the argument and its subject with
364
377
  `--subject`, and keeps its number; `remove` drops one done some other way or
365
378
  no longer wanted.
@@ -369,6 +382,13 @@ no longer wanted.
369
382
  one, named by path or by its stored file name (`todo show` lists them). They
370
383
  go when the todo does.
371
384
 
385
+ `--tag uploads,merge` tags a todo with the areas or goals it belongs to; a
386
+ todo can have several tags and a tag many todos. A tag is a lowercase word,
387
+ or a few joined by hyphens, and anything else is refused, so one area never
388
+ splits into two spellings. `update --tag` adds tags, `--remove-tag` drops them,
389
+ `list --tag` shows only one tag's todos, and `todo tags` lists every tag in
390
+ use with how many todos have it.
391
+
372
392
  ### `arbor retry <task>`
373
393
 
374
394
  Grants an escalated task another `mergeRetryCount` merge attempts and puts it
package/dev.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type AsyncResource } from "webappwiz/disposable";
2
2
  import type { Logger } from "webappwiz/log";
3
- import { type Fs, type PortProvider } from "webappwiz/system";
3
+ import { type Fs, type PortProvider, type Ps } from "webappwiz/system";
4
4
  import type { Assets } from "./dev/assets.js";
5
5
  import type { Journal } from "./journal.js";
6
6
  import type { Todos } from "./todo.js";
@@ -31,9 +31,10 @@ export interface DevServer extends AsyncResource {
31
31
  * todos. Anything that moves a task (merge, remove, claim) stays in the CLI,
32
32
  * so a page that should not have been reachable can at worst change a todo.
33
33
  */
34
- export declare function dev({ service, fs, journal, todos, log, assets, }: {
34
+ export declare function dev({ service, fs, ps, journal, todos, log, assets, }: {
35
35
  service: WorktreeService;
36
36
  fs: Fs;
37
+ ps: Ps;
37
38
  journal: Journal;
38
39
  todos: Todos;
39
40
  log: Logger;