pi-note 0.31.0 → 0.31.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/README.md CHANGED
@@ -50,9 +50,10 @@ state routing, tools and UI.
50
50
 
51
51
  Open **`/pinote`** (`/pi-note` is an alias). Select or create a task, preview it,
52
52
  clear the selection, complete it, respond to suggestions, or edit shared settings.
53
- Selection/creation and settings changes require confirmation. Nothing submits a
54
- model prompt automatically; inserting Continue's draft requires confirmation and
55
- preserves an existing draft.
53
+ Selecting an existing task starts it immediately and returns focus to the prompt,
54
+ with no extra confirmation. Creation and settings changes still require confirmation.
55
+ Nothing submits a model prompt automatically; inserting Continue's draft requires
56
+ confirmation and preserves an existing draft.
56
57
 
57
58
  Menus use Pi's native components and configured selection keys. **Escape** goes
58
59
  back; **Ctrl+R** refreshes. Settings with fewer than five choices cycle inline.
@@ -231,7 +231,7 @@ function view(data, scoped = false, secondary = false, features = {}) {
231
231
  ? t.id === state.launch.task_id && t.updated_at === state.launch.updated_at
232
232
  : `${t.text} ${t.tag ?? ''}`.toLowerCase().includes((state.search ?? '').toLowerCase()));
233
233
  for (const candidate of matches.slice(0, 200))
234
- action(`select:${candidate.id}`, `${candidate.tag ? `[${candidate.tag}] ` : ''}${candidate.text.split('\n')[0]}`, { description: `#${candidate.id} · ${candidate.state}`, confirm: 'Select and start this task for this conversation?' });
234
+ action(`select:${candidate.id}`, `${candidate.tag ? `[${candidate.tag}] ` : ''}${candidate.text.split('\n')[0]}`, { description: `#${candidate.id} · ${candidate.state} · Select and start this task` });
235
235
  if (matches.length > 200)
236
236
  body += '\nShowing the first 200 matches; use Filter tasks to narrow the list.';
237
237
  }
package/mcp/core.ts CHANGED
@@ -200,7 +200,7 @@ function view(data: Snapshot, scoped = false, secondary = false, features: { foo
200
200
  const matches = tasks.filter((t) => state.launch
201
201
  ? t.id === state.launch.task_id && t.updated_at === state.launch.updated_at
202
202
  : `${t.text} ${t.tag ?? ''}`.toLowerCase().includes((state.search ?? '').toLowerCase()));
203
- for (const candidate of matches.slice(0, 200)) action(`select:${candidate.id}`, `${candidate.tag ? `[${candidate.tag}] ` : ''}${candidate.text.split('\n')[0]}`, { description: `#${candidate.id} · ${candidate.state}`, confirm: 'Select and start this task for this conversation?' });
203
+ for (const candidate of matches.slice(0, 200)) action(`select:${candidate.id}`, `${candidate.tag ? `[${candidate.tag}] ` : ''}${candidate.text.split('\n')[0]}`, { description: `#${candidate.id} · ${candidate.state} · Select and start this task` });
204
204
  if (matches.length > 200) body += '\nShowing the first 200 matches; use Filter tasks to narrow the list.';
205
205
  }
206
206
  const footer: { text: string; openApp?: true; url?: string; action?: string; secondaryAction?: string; doubleAction?: string; style?: { italic: boolean; color: 'accent' }; width?: number }[] = features.footerNativeActions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-note",
3
- "version": "0.31.0",
3
+ "version": "0.31.1",
4
4
  "description": "Persistent pinote tasks, Markdown handoffs, and task status for Pi",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/remote/ui.ts CHANGED
@@ -172,7 +172,7 @@ export class RemoteUI {
172
172
  ctx.ui.notify('Value does not match the field type.', 'warning'); continue;
173
173
  }
174
174
  }
175
- if (current()) await this.dispatch(ctx, view, control, value);
175
+ if (current() && await this.dispatch(ctx, view, control, value) && control.id.startsWith('select:')) return;
176
176
  }
177
177
  } catch (error) { if (current()) ctx.ui.notify(error instanceof RemoteFailure ? error.message : 'Pinote unavailable', 'error'); }
178
178
  finally { this.opening = false; }