pendingyou 0.35.0 → 0.35.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.35.1 (2026-10-11)
4
+
5
+ - Fixed: the Pending You popup in Herdr no longer breaks on a kind of card it doesn't know yet (or a grouped card with
6
+ a question of such a kind). It shows the card and says "Answer this one in Pending You: o opens it."; reply, Later,
7
+ hand over and open still work.
8
+ - The person API client inside the command line follows the SDK's 0.2.0 types: the enums in what /v1 sends are open
9
+ (any string beside the known values), since /v1 adds values over time.
10
+
3
11
  ## 0.35.0 (2026-10-09)
4
12
 
5
13
  - Claude Code hears a question handed to it within seconds. When you delegate a card to one of your Claude Code agents
@@ -22,6 +22,25 @@ export const askerOf = (card) => `${card.asker.agent?.name ?? card.asker.assista
22
22
  const askerName = (card) => card.asker.agent?.name ?? card.asker.assistant.name;
23
23
  export const HIGH_STAKES = 'High stakes: answer it in Pending You, where you hold to approve. o opens it.';
24
24
  export const NOT_HERE = 'Answer this one in Pending You: o opens it.';
25
+ const KINDS = [
26
+ 'choice',
27
+ 'multi',
28
+ 'approve',
29
+ 'text',
30
+ 'review',
31
+ 'action',
32
+ 'fyi',
33
+ 'group',
34
+ ];
35
+ const QUESTION_KINDS = [
36
+ 'choice',
37
+ 'multi',
38
+ 'approve',
39
+ 'text',
40
+ ];
41
+ const answersHere = (card) => card.actions.includes('answer') &&
42
+ KINDS.includes(card.kind) &&
43
+ (card.questions ?? []).every((question) => QUESTION_KINDS.includes(question.kind));
25
44
  const NO_WORDS = 'Pending You takes no words on this card from Herdr: o opens it.';
26
45
  const NO_LATER = 'This card can’t go to Later from Herdr: o opens it.';
27
46
  const NO_HANDING = 'This card can’t be handed over from Herdr: o opens it.';
@@ -126,7 +145,7 @@ function listKey(state, key, now) {
126
145
  { kind: 'targets', card },
127
146
  ];
128
147
  }
129
- if (!card.actions.includes('answer'))
148
+ if (!answersHere(card))
130
149
  return [{ ...state, note: NOT_HERE }, NONE];
131
150
  return answerKey(state, card, key);
132
151
  }
@@ -211,6 +230,8 @@ function answerKey(state, card, key) {
211
230
  return [{ ...state, note: 'y: got it.' }, NONE];
212
231
  case 'group':
213
232
  return groupKey(state, card, key, send);
233
+ default:
234
+ return [{ ...state, note: NOT_HERE }, NONE];
214
235
  }
215
236
  }
216
237
  const toggled = (chosen, id) => chosen.includes(id) ? chosen.filter((each) => each !== id) : [...chosen, id];
@@ -289,6 +310,8 @@ function groupKey(state, card, key, send) {
289
310
  const suggestion = n ? question.text?.suggestions?.[n - 1] : undefined;
290
311
  return suggestion ? answered({ text: suggestion }) : [state, NONE];
291
312
  }
313
+ default:
314
+ return [{ ...state, note: NOT_HERE }, NONE];
292
315
  }
293
316
  }
294
317
  function writeKey(state, screen, key) {
@@ -564,7 +587,7 @@ function askLines(card, state, room, now) {
564
587
  lines.push(DIM(fit(`If you don’t answer ${fromNow(card.fallback.at, now)}: ${card.fallback.text}`)));
565
588
  if (card.highStakes)
566
589
  lines.push(...wrap(HIGH_STAKES, room, 2));
567
- else if (!card.actions.includes('answer'))
590
+ else if (!answersHere(card))
568
591
  lines.push(...wrap(NOT_HERE, room, 2));
569
592
  return lines;
570
593
  }
@@ -603,6 +626,8 @@ function answerKeys(card, state) {
603
626
  : [`1–${count(question?.options)}`];
604
627
  return [...own, 'Tab next question', 'Enter send all'];
605
628
  }
629
+ default:
630
+ return [];
606
631
  }
607
632
  }
608
633
  export function keysLine(state, now) {
@@ -632,7 +657,7 @@ export function keysLine(state, now) {
632
657
  if (card) {
633
658
  const busy = state.sent?.cardId === card.id && now < state.sent.until;
634
659
  if (!card.highStakes && !busy) {
635
- if (card.actions.includes('answer'))
660
+ if (answersHere(card))
636
661
  keys.push(...answerKeys(card, state));
637
662
  if (card.actions.includes('reply'))
638
663
  keys.push('r reply');
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.35.0';
1
+ export const VERSION = '0.35.1';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pendingyou-wake",
3
3
  "displayName": "Pending You",
4
- "version": "2.50.0",
4
+ "version": "2.52.0",
5
5
  "description": "Wakes Claude Code when your person answers a Pending You card it posted, even while it sits idle. Installed by `npx pendingyou init`.",
6
6
  "author": {
7
7
  "name": "RecordPlane",
package/mod/README.md CHANGED
@@ -4,4 +4,4 @@ The pendingyou command line’s copy of the Pending You plugin’s wake mod, for
4
4
 
5
5
  In each session it learns the cards the session posts to Pending You, checks them through the session’s own Pending You connection, and starts a turn when your person answers, writes back or a fallback comes due, or hands the session a question from another of their assistants (CLI 0.14.0), even while it sits idle. It answers `npx pendingyou hold` itself, so nothing waits in the background, and shows “2 waiting on you” under the prompt, after the plugin’s name. With the Pending You plugin installed too, only one copy acts.
6
6
 
7
- Generated from recordplane/pendingyou (packages/claude-plugin/src/wake) with Pending You’s guide 2.50.0; send changes there.
7
+ Generated from recordplane/pendingyou (packages/claude-plugin/src/wake) with Pending You’s guide 2.52.0; send changes there.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pendingyou",
3
- "version": "0.35.0",
3
+ "version": "0.35.1",
4
4
  "description": "Pending You for your coding agents: one command sets up Claude Code, Codex, OpenCode and Pi to ask you through Pending You and hear your answers, even while they sit idle.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://www.pendingyou.com",