taskchef 5.7.1 → 5.7.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "5.7.1",
3
+ "version": "5.7.2",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
package/README.md CHANGED
@@ -394,8 +394,9 @@ ID printed by the default human-readable list. A short ID must identify exactly
394
394
  one recorded task; use `task list --full-id` when a short ID is missing or
395
395
  ambiguous. Its default output labels the title, project name and path, creation
396
396
  time, full task and thread IDs, and instruction. A null thread ID appears as
397
- `-`, and multiline instructions retain their original line breaks and
398
- indentation. Pass `--json` to receive the unchanged complete task object.
397
+ `-`. Line breaks in labeled values are escaped as `\\r` and `\\n`, while
398
+ multiline instructions retain their original line breaks and indentation. Pass
399
+ `--json` to receive the unchanged complete task object.
399
400
 
400
401
  ```text
401
402
  Title: Add retry logs
package/SPEC.md CHANGED
@@ -309,9 +309,10 @@ The CLI reads persisted history without contacting Codex:
309
309
  - `task show <id-or-8-character-prefix>` returns one entry. By default it emits
310
310
  labeled human-readable lines for title, project name and path, creation time,
311
311
  full task ID, thread ID, and instruction. A null thread ID renders as `-`.
312
- The instruction starts on the line after `Instruction:` and retains its
313
- stored line breaks and indentation. `--json` returns the unchanged complete
314
- task object. The short form is the exact ID text printed by the default
312
+ Carriage returns and newlines in labeled values render as `\\r` and `\\n`.
313
+ The instruction starts on the line after `Instruction:` and retains its stored
314
+ line breaks and indentation. `--json` returns the unchanged complete task
315
+ object. The short form is the exact ID text printed by the default
315
316
  human-readable `task list` output and succeeds only when it identifies
316
317
  exactly one recorded task. Missing, ambiguous, malformed, shorter, and
317
318
  wrong-case prefixes fail without selecting a task.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "5.7.1",
3
+ "version": "5.7.2",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
package/src/cli.js CHANGED
@@ -161,14 +161,18 @@ function displayId(value, fullId) {
161
161
  return uuidSection ? uuidSection[0] : value;
162
162
  }
163
163
 
164
+ function singleLineDetail(value) {
165
+ return String(value).replaceAll("\r", "\\r").replaceAll("\n", "\\n");
166
+ }
167
+
164
168
  function taskDetails(task) {
165
169
  return [
166
- `Title: ${task.title}`,
167
- `Project: ${task.project.name}`,
168
- `Project path: ${task.project.path}`,
169
- `Created: ${task.createdAt}`,
170
- `Task ID: ${task.id}`,
171
- `Thread ID: ${task.threadId ?? "-"}`,
170
+ `Title: ${singleLineDetail(task.title)}`,
171
+ `Project: ${singleLineDetail(task.project.name)}`,
172
+ `Project path: ${singleLineDetail(task.project.path)}`,
173
+ `Created: ${singleLineDetail(task.createdAt)}`,
174
+ `Task ID: ${singleLineDetail(task.id)}`,
175
+ `Thread ID: ${singleLineDetail(task.threadId ?? "-")}`,
172
176
  "Instruction:",
173
177
  task.instruction,
174
178
  ].join("\n");