pi-note 0.41.1 → 0.41.2
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/dist-mcp/mcp/core.js +4 -1
- package/mcp/FIELD_EVENTS.md +3 -1
- package/mcp/README.md +2 -2
- package/mcp/core.ts +4 -1
- package/package.json +1 -1
- package/watchers/github-pr.mjs +1 -1
package/dist-mcp/mcp/core.js
CHANGED
|
@@ -315,7 +315,10 @@ function view(data, scoped = false, secondary = false, features = {}, watcherLog
|
|
|
315
315
|
const target = field.link && url && url.length <= 2048 ? url : undefined;
|
|
316
316
|
const width = field.width ?? config.config.fieldWidth;
|
|
317
317
|
const status = data.fieldStatuses.find((item) => item.field === field.name);
|
|
318
|
-
|
|
318
|
+
// Terminal PR results stop polling: refresh older cached styles on read.
|
|
319
|
+
const display = field.name === 'PR' && status?.result.state === 'merged'
|
|
320
|
+
? { color: 'accent', strikethrough: false } : status?.result.display;
|
|
321
|
+
const style = features.fieldEvents && status ? { ...(display ?? {}), ...(status.stale ? { color: 'muted' } : {}) } : undefined;
|
|
319
322
|
if (features.footerNativeActions) {
|
|
320
323
|
if (footer.length + (target ? 2 : 1) > 128)
|
|
321
324
|
break;
|
package/mcp/FIELD_EVENTS.md
CHANGED
|
@@ -41,7 +41,9 @@ make it executable (`chmod u+x`), and ensure authenticated `gh` and Node are on
|
|
|
41
41
|
using an absolute Node path in `ExecStart` alone is insufficient for the watcher's
|
|
42
42
|
`#!/usr/bin/env node` interpreter. It accepts a GitHub PR URL or Markdown link, checks once, and
|
|
43
43
|
requests another check in 60 seconds. It warns on failing checks/conflicts and
|
|
44
|
-
|
|
44
|
+
colours merged PRs with the theme accent (purple in Pi's default theme), without
|
|
45
|
+
strikethrough, while keeping their links. Previously cached merged results receive
|
|
46
|
+
the same footer styling without another GitHub check. Closed/merged PRs stop
|
|
45
47
|
polling; merging never completes the Pinote task. Passing means reported checks
|
|
46
48
|
passed, not that every review/branch-protection requirement is satisfied.
|
|
47
49
|
|
package/mcp/README.md
CHANGED
|
@@ -162,8 +162,8 @@ Xvfb and private D-Bus; never point them at personal data.
|
|
|
162
162
|
Manage `fieldWatchers` in **Settings → Footer fields → Watchers**. Bundled files
|
|
163
163
|
are discovered disabled; trusted custom executables can be added and enabled.
|
|
164
164
|
Independent checks survive restarts and settings apply live, without another daemon.
|
|
165
|
-
The GitHub PR watcher triggers the owning worker on failed CI/conflicts and
|
|
166
|
-
|
|
165
|
+
The GitHub PR watcher triggers the owning worker on failed CI/conflicts and marks
|
|
166
|
+
merged PRs with the theme accent (default purple), without strikethrough. With pi-note 0.41.1+ on both sides, failed watcher executions
|
|
167
167
|
produce grouped terminal-only notices pointing to the service log; retries do not
|
|
168
168
|
spam the terminal or trigger model turns. Requires note 0.24.0+. Review the
|
|
169
169
|
[watcher contract and safeguards](FIELD_EVENTS.md) before enabling trusted code.
|
package/mcp/core.ts
CHANGED
|
@@ -271,7 +271,10 @@ function view(data: Snapshot, scoped = false, secondary = false, features: { foo
|
|
|
271
271
|
const target = field.link && url && url.length <= 2048 ? url : undefined;
|
|
272
272
|
const width = field.width ?? config.config.fieldWidth;
|
|
273
273
|
const status = data.fieldStatuses.find((item) => item.field === field.name);
|
|
274
|
-
|
|
274
|
+
// Terminal PR results stop polling: refresh older cached styles on read.
|
|
275
|
+
const display = field.name === 'PR' && status?.result.state === 'merged'
|
|
276
|
+
? { color: 'accent' as const, strikethrough: false } : status?.result.display;
|
|
277
|
+
const style = features.fieldEvents && status ? { ...(display ?? {}), ...(status.stale ? { color: 'muted' as const } : {}) } : undefined;
|
|
275
278
|
if (features.footerNativeActions) {
|
|
276
279
|
if (footer.length + (target ? 2 : 1) > 128) break;
|
|
277
280
|
// Clip before splitting: each field still consumes one field slot, and
|
package/package.json
CHANGED
package/watchers/github-pr.mjs
CHANGED
|
@@ -51,7 +51,7 @@ export async function handleFieldEvent(event) {
|
|
|
51
51
|
const pr = JSON.parse(stdout);
|
|
52
52
|
const checks = validateResponse(pr);
|
|
53
53
|
const summary = `PR #${number}`;
|
|
54
|
-
if (pr.state === 'MERGED') return { state: 'merged', summary: `${summary} merged`, display: { strikethrough:
|
|
54
|
+
if (pr.state === 'MERGED') return { state: 'merged', summary: `${summary} merged`, display: { strikethrough: false, color: 'accent' } };
|
|
55
55
|
if (pr.state === 'CLOSED') return { state: 'closed', summary: `${summary} closed`, display: { strikethrough: false, color: 'muted' } };
|
|
56
56
|
const conflict = pr.mergeable === 'CONFLICTING';
|
|
57
57
|
const failed = checks.filter((check) => check.failed);
|