pi-note 0.17.0 β†’ 0.17.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
@@ -203,18 +203,18 @@ When allowed by `taskOfferPolicy`, the agent uses `pinote_propose` instead of
203
203
  asking in chat. The pin footer shows a pending suggestion, distinct from a selected task:
204
204
 
205
205
  ```text
206
- πŸ“Œ βœ• + Β· [tag] Task title...
207
- πŸ“Œ βœ“ Β· [tag] Task title...
206
+ πŸ“Œ βœ– ✚ Β· [tag] Task title...
207
+ πŸ“Œ βœ” Β· [tag] Task title...
208
208
  ```
209
209
 
210
210
  ![Suggested task controls](../docs/images/pi-task-suggestion.png)
211
211
  ![Selected task with Done control](../docs/images/pi-task-selected.png)
212
212
 
213
- - Muted **βœ•** dismisses only the current suggestion without creating a note; the agent can suggest another task while none is selected.
214
- - Accent **+** creates, starts, and selects the suggested task.
215
- - Green **βœ“** completes the selected task, starts a clean unselected session, and reloads Pi without a completion prompt. Menu **Done** and **Complete task** in Settings do the same.
213
+ - Muted **βœ–** dismisses only the current suggestion without creating a note; the agent can suggest another task while none is selected.
214
+ - Accent **✚** creates, starts, and selects the suggested task.
215
+ - Green **βœ”** completes the selected task, starts a clean unselected session, and reloads Pi without a completion prompt. Menu **Done** and **Complete task** in Settings do the same.
216
216
 
217
- Done occupies the former βœ• position, not the + position, so clicking Add twice cannot accidentally complete the new task. The selected row removes the former + cell's padding. The selected task's title is a separate preview link.
217
+ Done occupies the former βœ– position, not the ✚ position, so clicking Add twice cannot accidentally complete the new task. The selected row removes the former ✚ cell's padding. The selected task's title is a separate preview link.
218
218
 
219
219
  The configured `footer.titleWidth` bounds the entire row (default 60 columns). Controls stay first; the tag is dropped before truncating the first-line title with `...`. Tiny widths hide controls (pin only). Pi can still clip the combined status row on narrow terminals.
220
220
 
@@ -222,7 +222,7 @@ Controls use the [Kitty preview handler](#display-only-preview), with no additio
222
222
 
223
223
  Completion requires an idle Pi session and no pending Pinote operation. It rejects stale selected-task links and externally changed revisions. Accepted mutations drain even if the helper disconnects. On an error, check `/pi-note` before retrying, because a write may already have committed. Failed or stale writes never restart Pi. If another extension cancels the new session, the task remains completed and Pi reports the cancellation. The reload runs through the new session's fresh context; retired contexts are not reused.
224
224
 
225
- If another task fits better, the agent can replace an unaccepted suggestion by calling `pinote_propose` again, without waiting for dismissal. Replacement invalidates the old +/βœ• links; only the latest suggestion can be accepted or dismissed. Pending suggestions survive `/reload` and session resume, including their full text and tag; new links replace stale capabilities. Accepted or dismissed suggestions never reappear on reload, but dismissal does not block new proposalsβ€”even in sessions saved by older versions. New sessions and forks start without a suggestion; selecting a task or navigating the tree clears it. Suggestion state is local, display-only session metadata, not model context. Pi saves the session after the first submitted message; quitting before that can still lose unsaved session state. Repeated acceptance cannot duplicate a note. A busy Pinote operation blocks acceptance. Noninteractive agents still ask in chat before using `pinote_add` with `select: true`. An existing selection is not replaced unless the user asks to switch. Reuse a saved
225
+ If another task fits better, the agent can replace an unaccepted suggestion by calling `pinote_propose` again, without waiting for dismissal. Replacement invalidates the old ✚/βœ– links; only the latest suggestion can be accepted or dismissed. Pending suggestions survive `/reload` and session resume, including their full text and tag; new links replace stale capabilities. Accepted or dismissed suggestions never reappear on reload, but dismissal does not block new proposalsβ€”even in sessions saved by older versions. New sessions and forks start without a suggestion; selecting a task or navigating the tree clears it. Suggestion state is local, display-only session metadata, not model context. Pi saves the session after the first submitted message; quitting before that can still lose unsaved session state. Repeated acceptance cannot duplicate a note. A busy Pinote operation blocks acceptance. Noninteractive agents still ask in chat before using `pinote_add` with `select: true`. An existing selection is not replaced unless the user asks to switch. Reuse a saved
226
226
  tag name when it fits.
227
227
 
228
228
  ![Pending suggestion replaced without creating a task](../docs/images/pi-task-replacement.png)
package/icons/add.txt CHANGED
@@ -1 +1 @@
1
- +
1
+ ✚
package/icons/check.txt CHANGED
@@ -1 +1 @@
1
- βœ“
1
+ βœ”
package/icons/cross.txt CHANGED
@@ -1 +1 @@
1
- βœ•
1
+ βœ–
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-note",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Persistent pinote tasks, Markdown handoffs, and task status for Pi",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,7 +34,7 @@ export function renderSuggestion(task: Task, width: number, theme: Colors, urls:
34
34
  }
35
35
 
36
36
  export function renderSelectedTask(task: Task, width: number, theme: Colors, urls: { preview?: string; done?: string }): string {
37
- // Done stays in the former 'βœ•' cell, never the Add cell.
37
+ // Done stays in the former 'βœ–' cell, never the Add cell.
38
38
  return renderTask(task, width, theme,
39
39
  `${theme.bold(pin)} ${theme.fg("success", link(theme.bold(check), urls.done))}`,
40
40
  urls.preview);