lobstah 0.6.6 → 0.6.7

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/docs/man.md CHANGED
@@ -486,6 +486,22 @@ only a trap id in a same-origin, token-protected POST. The ⚙ popover's two
486
486
  preferences — table or cards, and whether lobsters crawl the page — are
487
487
  per-browser, kept in that browser's localStorage and never on disk.
488
488
 
489
+ Each open glass page, and each report's page, reports its presence: every
490
+ poll, and every 30 s while its tab is hidden, it sends the server a random
491
+ page id and whether it is visible; the server reads the browser's user
492
+ agent from the request and forgets a page three minutes after it last
493
+ reported, or at once when the page closes. `lobstah glass show '<#hash>'`
494
+ asks the page most likely in front of you (the latest visible one, else the
495
+ latest seen) to show a tab (`#prs`), a decision (`#decision/<key>`), or a
496
+ report (`#report/<key>`). The page applies each show once, on its next poll
497
+ or as soon as its tab is visible again. The command prints whether a page
498
+ was seen and in which app (`claude` for the Claude desktop app's Browser
499
+ pane, `chrome`, `safari`, `firefox`, `edge`, `electron`, or `other`);
500
+ `--json` prints the same as JSON for the desktop pet. `POST /api/show` is
501
+ local only: it needs the secret in `~/.lobstah/state/glass-show.secret`
502
+ (user-only, created by the first `glass show`), the glass's own Host, and no
503
+ `Origin` header, so no web page can send one.
504
+
489
505
  On a card, the title and the badge share one line. The title shrinks first,
490
506
  with an ellipsis, but always keeps its PR number or 8-character id. A badge of
491
507
  12 characters or fewer always shows whole. A longer badge truncates only
@@ -770,7 +786,9 @@ it under the inbox.
770
786
  **Acknowledging, display-only.** Clicking a desktop pet opens its target and
771
787
  runs `lobstah attention ack <item-key> --by pet`, so that pet stops walking
772
788
  the item until its state changes (a new status entry, head, failed check, or
773
- thread count). The ack changes only what the pet and the glass lobs display:
789
+ thread count; a ready PR changes only by becoming ready again after it was
790
+ not). The pet also hides the clicked item itself until its state changes, so
791
+ an ack that times out does not leave it walking. The ack changes only what the pet and the glass lobs display:
774
792
  `man tend --json` still lists the item (marked `acked`), and `man wait`, the
775
793
  park, and reminders ignore acks entirely — a human having seen a question
776
794
  must never hide it from the orchestrator that has to answer it. The glass,
@@ -563,7 +563,7 @@ reminder loop apply the same predicate.
563
563
 
564
564
  | Word | Meaning |
565
565
  | ---- | ------- |
566
- | ack | `~/.lobstah/acks/<item-key>.json` — `{ key, kind, stateHash, at, by }`, written only by `lobstah attention ack` (removed by `unack`, by the CLI's `man tend` / `attention` when its `stateHash` goes stale, and by `cull` when the item is gone). **Display-only**: it hides the item from the desktop pet and the glass lobs while the item's `stateHash` is unchanged; `man tend --json` keeps the item with `acked: { at, by }`, and `man wait`, the park, reminders, and `notifyCommand` never read acks. Item keys: `<lane>:<uuid>` (question, landed), `decision:<rid>`, `pr:<owner>/<repo>#<n>` (all of a PR's `pr:*` kinds — one ack covers them), `watch:<key>`. `stateHash` covers the status entry (question, landed) or the PR's head sha plus every evidence field a `pr:*` kind stands on (not `observedAt`). |
566
+ | ack | `~/.lobstah/acks/<item-key>.json` — `{ key, kind, stateHash, at, by }`, written only by `lobstah attention ack` (removed by `unack`, by the CLI's `man tend` / `attention` when its `stateHash` goes stale, and by `cull` when the item is gone). **Display-only**: it hides the item from the desktop pet and the glass lobs while the item's `stateHash` is unchanged; `man tend --json` keeps the item with `acked: { at, by }`, and `man wait`, the park, reminders, and `notifyCommand` never read acks. Item keys: `<lane>:<uuid>` (question, landed), `decision:<rid>`, `pr:<owner>/<repo>#<n>` (all of a PR's `pr:*` kinds — one ack covers them), `watch:<key>`. `stateHash` covers the status entry (question, landed) or the PR's head sha plus every evidence field a `pr:*` kind stands on (not `observedAt`); for a ready PR, only when `pr:ready` began standing (its `standingSince`), so repeat observations of the same ready state keep the ack and ready → not ready → ready re-stands it once. |
567
567
  | pet state | `~/.lobstah/pet/state.json` — `{ pid, at, ok, command, reason, consecutiveFailures, items, lastOkAt }`. The desktop pet's one write: it rewrites the file after each attention read (about every six seconds). `command` is the command that worked (`attention --json`, or `man tend --json` from an older CLI). `reason` says why the last read failed (timed out, non-zero exit, output that does not decode). Only `lobstah doctor` reads it, for its `pet` row: running means `pid` is alive and `at` is less than two minutes old. |
568
568
  | budget stop | A headless runner's `failed` verb with a `budget:` note means its progress-extended active-work window reached the hard ceiling. This is out of time, not a code failure: the runner checkpoints eligible changes, pushes when enabled, names the saved branch/commit/draft PR, and invites `lobstah send <id> "continue"`. Paused `--waiting-on` time is excluded. |
569
569
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lobstah",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "description": "Harness-agnostic, token-efficient supervision framework for coding agents",
5
5
  "license": "MIT",
6
6
  "author": "aequitas labs LLC",