taskchef 4.1.0 → 4.1.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": "4.1.0",
3
+ "version": "4.1.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
@@ -253,15 +253,17 @@ taskchef project list --workspace <workspace>
253
253
  taskchef project remove payments --workspace <workspace>
254
254
  ```
255
255
 
256
- Human-readable project listings use one row per GitHub repository. Project
257
- details repeat on each row so multi-repository projects remain clear, while a
258
- project without a configured repository has one row containing `-`:
256
+ Human-readable project listings show one parent row per project. The first
257
+ configured GitHub repository appears on that row; additional repositories
258
+ appear beneath it as indented tree rows, aligned with the repository column and
259
+ with repeated kind and path cells left blank. A project without a configured
260
+ repository has only its parent row, containing `-` in the repository column:
259
261
 
260
262
  ```text
261
- NAME KIND GITHUB REPOSITORY PATH
262
- payments git https://github.com/example/payments-api /workspace/payments
263
- payments git https://github.com/example/payments-sdk /workspace/payments
264
- notes folder - /workspace/notes
263
+ NAME KIND GITHUB REPOSITORY PATH
264
+ notes folder - /workspace/notes
265
+ payments git https://github.com/example/payments-api /workspace/payments
266
+ └─ https://github.com/example/payments-sdk
265
267
  ```
266
268
 
267
269
  Import projects as a JSON array from a file or standard input:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "4.1.0",
3
+ "version": "4.1.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
@@ -15,6 +15,8 @@ import {
15
15
  resolveTask,
16
16
  } from "./workspace.js";
17
17
 
18
+ const BLANK_TABLE_CELL = Symbol("blank table cell");
19
+
18
20
  async function readStdin() {
19
21
  let input = "";
20
22
  process.stdin.setEncoding("utf8");
@@ -88,26 +90,33 @@ function print(value, args, human) {
88
90
  }
89
91
 
90
92
  function table(headers, rows) {
91
- const display = (value) => value === null || value === undefined || value === ""
92
- ? "-"
93
- : String(value);
93
+ const display = (value) => {
94
+ if (value === BLANK_TABLE_CELL) return "";
95
+ if (value === null || value === undefined || value === "") return "-";
96
+ return String(value);
97
+ };
94
98
  const widths = headers.map((header, index) =>
95
99
  Math.max(header.length, ...rows.map((row) => display(row[index]).length)));
96
100
  const format = (row) => row.map((value, index) => index === row.length - 1
97
101
  ? display(value)
98
- : display(value).padEnd(widths[index])).join(" ");
102
+ : display(value).padEnd(widths[index])).join(" ").trimEnd();
99
103
  return [format(headers), ...rows.map(format)].join("\n");
100
104
  }
101
105
 
102
106
  function projectRows(projects) {
103
107
  return projects.flatMap((project) => {
104
- const repositories = project.githubRepos.length > 0 ? project.githubRepos : [null];
105
- return repositories.map((repository) => [
108
+ const [primaryRepository = null, ...additionalRepositories] = project.githubRepos;
109
+ return [[
106
110
  project.name,
107
111
  project.isGitRepository ? "git" : "folder",
108
- repository,
112
+ primaryRepository,
109
113
  project.path,
110
- ]);
114
+ ], ...additionalRepositories.map((repository, index) => [
115
+ ` ${index === additionalRepositories.length - 1 ? "└─" : "├─"}`,
116
+ BLANK_TABLE_CELL,
117
+ repository,
118
+ BLANK_TABLE_CELL,
119
+ ])];
111
120
  });
112
121
  }
113
122