@rness/cli 0.19.0 → 0.20.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
@@ -60,10 +60,14 @@ when dropped, red `?` when missing.
60
60
  `PgUp`/`PgDn`, `Home`/`End` scroll, `q` or `Esc` closes and gives the
61
61
  screen back. Read-only.
62
62
  - Off a terminal — a pipe, CI, an agent's tool — Markdown: a table per tab.
63
- - `--json`, terminal or not: the tabs and their rows, with what a Claude
64
- Code session shows of the workspace, worded by the CLI — the session-start
65
- banner, the status line entry, the scope's plans `In progress` and the
66
- notes of the safety net (see "Hooks"). The plugin's mod reads it (see
63
+ - `--json`, terminal or not: the tabs and their rows — each row with the
64
+ colour of its status on Agent Pulse (`color`, the board's name for it:
65
+ `yellow` for `In progress`; `red` without a status) and its item there
66
+ (`link`, the board filtered on its path; null without a pulse) — the
67
+ board (`pulse`), and what a Claude Code session shows of the workspace,
68
+ worded by the CLI — the session-start banner, the status line entry, the
69
+ scope's plans `In progress` and the notes of the safety net (see
70
+ "Hooks"). The plugin's mod reads it (see
67
71
  "The mod").
68
72
  - From Claude Code, `/rness:status [tab]` opens a pane beside the
69
73
  conversation when the plugin's mod is loaded (see "The mod"), and shows
@@ -176,13 +180,26 @@ the pinned copy, and computes nothing itself:
176
180
  there are notes. Claude Code draws it after the plugin's name:
177
181
  `⚠ rness: web · 1 in progress` (2.1.289).
178
182
  - **`/rness:status [tab]` as a pane** beside the conversation, a tab per
179
- collection, a row per document; no model turn. The pane takes the
180
- keyboard as it opens: a tab's digit (written before its name), or Tab
181
- then Enter, shows that tab; ↑/↓, `PgUp`/`PgDn`, `Home`/`End` scroll, as
182
- in the full-screen `rness status`; Esc and `q` close it, and so does Esc
183
- at an empty prompt once the prompt has the keys back. A pane has no
184
- ←/→ in Claude Code 2.1.289. In `claude -p`, or where no pane can be
185
- placed, the skill's tables answer instead.
183
+ collection, a row per document, its status in the colour Agent Pulse
184
+ gives it (yellow in progress, green done, red blocked, gray draft or
185
+ abandoned, blue proposed, purple approved — the board's purple is the
186
+ terminal's magenta); no model turn. The pane takes the keyboard as it
187
+ opens, on the newest row, with the keys of the full-screen view:
188
+ **↑/↓ select a row**, `PgUp`/`PgDn` a page away, `Home`/`End`
189
+ the ends, the window following the selection; **Tab and Shift+Tab
190
+ change the tab**, wrapping, and so does a tab's digit (written before
191
+ its name); **Enter, or a click, on a row shows the document**; Esc and
192
+ `q` close the pane, and so does Esc at an empty prompt once the prompt
193
+ has the keys back. The selected row is drawn between `‹` and `›`, which
194
+ a click presses too. A pane has no ←/→ in Claude Code 2.1.289. The
195
+ document is read from `.rness/` without its front matter, as the
196
+ board's card shows it; `q` brings the list back, Esc still closes. An
197
+ edit of the document shows at the next refresh. **Agent
198
+ Pulse is a link** when the workspace declares a pulse: the board from the
199
+ list, the document's item (the board filtered on its path) from the
200
+ document. The terminal opens it as it opens any hyperlink (cmd+click on
201
+ macOS, as a rule), a desktop surface on a click. In `claude -p`, or where
202
+ no pane can be placed, the skill's tables answer instead.
186
203
 
187
204
  It reads the snapshot again at session start, after an `Edit` or `Write`
188
205
  of a file under `.rness/`, and at the end of each turn, off the turn's
@@ -674,6 +691,15 @@ per repository, the files to commit there.
674
691
  Exit codes: 0 success, 1 failure, 2 usage — or a refusal without a TTY.
675
692
  `RNESS_DEBUG=1` adds stack traces; `RNESS_NO_DELEGATE=1` skips the delegation.
676
693
 
694
+ ## 0.20.0 — the status pane opens a document; ↑/↓ select, Tab changes the tab; Agent Pulse's colours and links
695
+
696
+ - `/rness:status` in Claude Code: each row's status in Agent Pulse's colour;
697
+ ↑/↓ select a row, Tab and Shift+Tab change the tab; Enter, or a click, on
698
+ a row shows the document in the pane and `q` brings the list back; Agent
699
+ Pulse is a link — the board from the list, the document's item from the
700
+ document. `rness status --json` prints each row's `color` and `link`, and
701
+ the board as `pulse`.
702
+
677
703
  ## 0.19.0 — the plugin's mod; edits of generated files refused before they land
678
704
 
679
705
  - The Claude Code plugin gains a mod (see "The mod"): the notes to act on
package/dist/bin/rness.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  findDelegate,
7
7
  reportError,
8
8
  run
9
- } from "../chunk-U5SBNWVD.js";
9
+ } from "../chunk-WIZHU4WT.js";
10
10
 
11
11
  // src/bin/rness.ts
12
12
  import { pathToFileURL } from "url";
@@ -511,7 +511,7 @@ function parseRepoSpec(spec, org, host) {
511
511
  }
512
512
 
513
513
  // src/version.ts
514
- var VERSION = "0.19.0";
514
+ var VERSION = "0.20.0";
515
515
 
516
516
  // src/core/pm.ts
517
517
  import { execFile as execFile2 } from "child_process";
@@ -1259,9 +1259,15 @@ async function plansInProgress(ws, manifest, scope) {
1259
1259
  // src/pulse/body.ts
1260
1260
  import { createHash } from "crypto";
1261
1261
  import { posix as posix4 } from "path";
1262
- var BODY_LIMIT = 65536;
1262
+
1263
+ // src/pulse/urls.ts
1264
+ var boardUrl = (org, project) => `https://github.com/orgs/${org}/projects/${project}`;
1265
+ var itemUrl = (org, project, path) => `${boardUrl(org, project)}?filterQuery=${encodeURIComponent(`path:"${path}"`)}`;
1263
1266
  var blobUrl = (org, path) => `https://github.com/${org}/.rness/blob/main/${encodeURI(path)}`;
1264
1267
  var issueUrl = (org, number) => `https://github.com/${org}/.rness/issues/${number}`;
1268
+
1269
+ // src/pulse/body.ts
1270
+ var BODY_LIMIT = 65536;
1265
1271
  function headerOf(path, org) {
1266
1272
  return `\`${path}\` \xB7 [on GitHub](${blobUrl(org, path)})`;
1267
1273
  }
@@ -8788,10 +8794,26 @@ function statusLine(scope, inProgress, notes) {
8788
8794
  const acting = notes.filter((n) => !n.startsWith(" ")).length;
8789
8795
  return `${scope ?? "global"} \xB7 ${inProgress.length} in progress${acting > 0 ? ` \xB7 \u26A0 ${acting}` : ""}`;
8790
8796
  }
8797
+ function pulseOf(manifest) {
8798
+ const project = manifest.projects?.[PULSE];
8799
+ return manifest.org === null || project === void 0 ? null : { org: manifest.org, project };
8800
+ }
8801
+ function snapshotTabs(tabs, pulse) {
8802
+ return tabs.map((tab) => ({
8803
+ name: tab.name,
8804
+ label: tab.label,
8805
+ rows: tab.rows.map((row) => ({
8806
+ ...row,
8807
+ color: row.status === null ? "red" : optionColor("Status", row.status),
8808
+ link: pulse === null ? null : itemUrl(pulse.org, pulse.project, row.path)
8809
+ }))
8810
+ }));
8811
+ }
8791
8812
  async function statusSnapshot(ws, manifest, scope, tabs) {
8792
8813
  const { banner: banner2 } = await scopeBanner(ws, manifest, scope);
8793
8814
  const inProgress = await plansInProgress(ws, manifest, scope);
8794
8815
  const notes = await safetyNet(ws, manifest);
8816
+ const pulse = pulseOf(manifest);
8795
8817
  return {
8796
8818
  version: VERSION,
8797
8819
  workspace: workspaceName(manifest, ws.root),
@@ -8800,7 +8822,8 @@ async function statusSnapshot(ws, manifest, scope, tabs) {
8800
8822
  statusLine: statusLine(scope, inProgress, notes),
8801
8823
  inProgress,
8802
8824
  notes: noteLines(notes),
8803
- tabs
8825
+ pulse: pulse === null ? null : boardUrl(pulse.org, pulse.project),
8826
+ tabs: snapshotTabs(tabs, pulse)
8804
8827
  };
8805
8828
  }
8806
8829
 
@@ -9267,7 +9290,6 @@ async function writeOpened(file, opened) {
9267
9290
  var PROJECT_SCOPE = "project";
9268
9291
  var NEEDS_LOGIN = "the pulse needs a GitHub login: run rness login";
9269
9292
  var NEEDS_SCOPE = "the pulse needs the project scope: run rness login";
9270
- var boardUrl = (org, project) => `https://github.com/orgs/${org}/projects/${project}`;
9271
9293
  async function fromGithub(work) {
9272
9294
  try {
9273
9295
  return await work;
@@ -10280,4 +10302,4 @@ export {
10280
10302
  OWN_COMMANDS,
10281
10303
  catchUp
10282
10304
  };
10283
- //# sourceMappingURL=chunk-U5SBNWVD.js.map
10305
+ //# sourceMappingURL=chunk-WIZHU4WT.js.map