@mediamonks/canopy-cli 0.7.13 → 0.7.14
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/dist/docs/cli-feedback.md +13 -3
- package/dist/docs/platform-feedback.md +5 -0
- package/dist/{docs-BBMVxVta.mjs → docs-3pQHiuTn.mjs} +1 -1
- package/dist/{feedback-BMX_d4KZ.mjs → feedback-DReTDDzD.mjs} +25 -6
- package/dist/index.mjs +5 -5
- package/dist/{package-vJXq4RNN.mjs → package-CuyFMXam.mjs} +1 -1
- package/dist/{skill-Zq9aIPKf.mjs → skill-M4RHvuUB.mjs} +1 -1
- package/dist/{upgrade-ES8u8_Pn.mjs → upgrade-C8Xox-P-.mjs} +1 -1
- package/package.json +1 -1
|
@@ -37,11 +37,15 @@ machine-readable output.
|
|
|
37
37
|
URL, deploy version, console errors — or CLI context), the screenshots on
|
|
38
38
|
the report, and the comment trail. `--download` saves the screenshots into
|
|
39
39
|
a directory so you can actually look at them.
|
|
40
|
-
- `comment <id> <text
|
|
41
|
-
|
|
40
|
+
- `comment <id> <text> [--internal]` — append a comment (findings, questions,
|
|
41
|
+
updates). `--internal` (members only) keeps the note off the reporter's
|
|
42
|
+
view — for stack traces, table names, and other working detail that would
|
|
43
|
+
only confuse them.
|
|
44
|
+
- `attach <id> <file> [--attach <more>] [--caption <text>] [--comment <text>] [--internal]` —
|
|
42
45
|
add screenshots to an existing report. With `--comment`, the comment is
|
|
43
46
|
posted first and the screenshots hang off that trail entry — how you show
|
|
44
|
-
"here's what it looks like after the fix".
|
|
47
|
+
"here's what it looks like after the fix". `--internal` makes that comment a
|
|
48
|
+
members-only note, screenshots included.
|
|
45
49
|
- `status <id> <new-status> [--comment <note>]` — move the ticket; the
|
|
46
50
|
transition is recorded on the trail. Moving to `investigated` needs the
|
|
47
51
|
findings: pass `--comment`, or comment first.
|
|
@@ -65,6 +69,12 @@ yet. Reproduce with the context in `show` (including the deploy version that
|
|
|
65
69
|
served the page), then `status <id> investigated --comment "<what you found>"`.
|
|
66
70
|
Stop there — say what it would take to fix and let the person decide.
|
|
67
71
|
|
|
72
|
+
Split your findings by audience: the status comment is what the **reporter**
|
|
73
|
+
reads, so keep it plain ("the upload fails for files over 5 MB — looking into
|
|
74
|
+
it"). The tech-loaded version — stack traces, table names, reproduction
|
|
75
|
+
queries — goes in `comment <id> "<detail>" --internal`, which only project
|
|
76
|
+
members see. An internal note counts as findings for `investigated`.
|
|
77
|
+
|
|
68
78
|
**Build:** `list --status accepted` is what a person has asked for. Do the
|
|
69
79
|
work, then `resolve` with a note, or `declined` if it turns out to be a bad
|
|
70
80
|
idea. Set `accepted` yourself only when the person you are working with told
|
|
@@ -65,6 +65,11 @@ Project members triage reports on the **Feedback tab**:
|
|
|
65
65
|
- The order is a suggestion, not a track. Accept something straight away, skip
|
|
66
66
|
the investigation, or decline it at any point.
|
|
67
67
|
- Every status change and comment is recorded on the item's trail.
|
|
68
|
+
- A comment can be marked **internal** (the toggle next to the comment box):
|
|
69
|
+
visible to project members and admins only, never the reporter. That's the
|
|
70
|
+
place for stack traces, query plans, and other working notes that would only
|
|
71
|
+
confuse the person who filed the report — screenshots attached to an
|
|
72
|
+
internal note stay internal too.
|
|
68
73
|
- Reporters follow their submissions on the **Reports page** (dashboard
|
|
69
74
|
header) and can comment on or withdraw their own items; only project
|
|
70
75
|
members change statuses.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-CuyFMXam.mjs";
|
|
2
2
|
import { n as siteConfig } from "./site-BUlQR117.mjs";
|
|
3
3
|
import { i as latestKnownVersion, r as compareSemver } from "./version-check-CcsA1QjI.mjs";
|
|
4
4
|
import { n as reportErrors } from "./ui-B1Px5y7q.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-CuyFMXam.mjs";
|
|
2
2
|
import { a as projectDirArgs, c as resolveProject, n as siteConfig, u as tryReadCanopyJson } from "./site-BUlQR117.mjs";
|
|
3
3
|
import { c as apiRequest, l as apiUpload, n as reportErrors, s as apiDownload } from "./ui-B1Px5y7q.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
@@ -165,7 +165,8 @@ const showCommand = defineCommand({
|
|
|
165
165
|
for (const entry of comments) {
|
|
166
166
|
const author = entry.author_name || entry.author_email || "unknown";
|
|
167
167
|
const move = entry.status_to ? ` [${entry.status_from} → ${entry.status_to}]` : "";
|
|
168
|
-
|
|
168
|
+
const internal = entry.internal ? " [internal]" : "";
|
|
169
|
+
console.log(`--- ${author} · ${entry.created_at}${move}${internal}`);
|
|
169
170
|
if (entry.body) console.log(entry.body);
|
|
170
171
|
}
|
|
171
172
|
if (args.download && shots.length > 0) {
|
|
@@ -196,12 +197,19 @@ const commentCommand = defineCommand({
|
|
|
196
197
|
description: "Comment text",
|
|
197
198
|
required: true
|
|
198
199
|
},
|
|
200
|
+
internal: {
|
|
201
|
+
type: "boolean",
|
|
202
|
+
description: "Triager-only note, hidden from the reporter — for tech detail (stack traces, table names) that would only confuse them (members only)"
|
|
203
|
+
},
|
|
199
204
|
...projectDirArgs
|
|
200
205
|
},
|
|
201
206
|
run: reportErrors("feedback comment", async ({ args }) => {
|
|
202
207
|
const { slug } = resolveProject(args);
|
|
203
|
-
await apiRequest("POST", `/projects/${slug}/feedback/${encodeURIComponent(args.id)}/comments`, {
|
|
204
|
-
|
|
208
|
+
await apiRequest("POST", `/projects/${slug}/feedback/${encodeURIComponent(args.id)}/comments`, {
|
|
209
|
+
body: args.text,
|
|
210
|
+
...args.internal ? { internal: true } : {}
|
|
211
|
+
});
|
|
212
|
+
console.log(args.internal ? "Internal note added (hidden from the reporter)." : "Comment added.");
|
|
205
213
|
})
|
|
206
214
|
});
|
|
207
215
|
const statusCommand = defineCommand({
|
|
@@ -366,17 +374,28 @@ const feedbackCommand = defineCommand({
|
|
|
366
374
|
type: "string",
|
|
367
375
|
description: "Post this comment first and hang the screenshots off it"
|
|
368
376
|
},
|
|
377
|
+
internal: {
|
|
378
|
+
type: "boolean",
|
|
379
|
+
description: "Make the --comment a triager-only note; its screenshots are hidden from the reporter too (members only)"
|
|
380
|
+
},
|
|
369
381
|
...projectDirArgs
|
|
370
382
|
},
|
|
371
383
|
run: reportErrors("feedback attach", async ({ args }) => {
|
|
372
384
|
const { slug } = resolveProject(args);
|
|
373
385
|
const paths = [args.file, ...attachedPaths(args.attach)];
|
|
374
386
|
for (const path of paths) await readFile(path);
|
|
387
|
+
if (args.internal && !args.comment) {
|
|
388
|
+
console.error("--internal needs a --comment to hang the screenshots off.");
|
|
389
|
+
process.exit(1);
|
|
390
|
+
}
|
|
375
391
|
let commentId;
|
|
376
392
|
if (args.comment) {
|
|
377
|
-
const { comment } = await apiRequest("POST", `/projects/${slug}/feedback/${encodeURIComponent(args.id)}/comments`, {
|
|
393
|
+
const { comment } = await apiRequest("POST", `/projects/${slug}/feedback/${encodeURIComponent(args.id)}/comments`, {
|
|
394
|
+
body: args.comment,
|
|
395
|
+
...args.internal ? { internal: true } : {}
|
|
396
|
+
});
|
|
378
397
|
commentId = comment.id;
|
|
379
|
-
console.log("Comment added.");
|
|
398
|
+
console.log(args.internal ? "Internal note added (hidden from the reporter)." : "Comment added.");
|
|
380
399
|
}
|
|
381
400
|
await attachFiles(slug, args.id, paths, args.caption, commentId);
|
|
382
401
|
})
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as version } from "./package-
|
|
2
|
+
import { t as version } from "./package-CuyFMXam.mjs";
|
|
3
3
|
import { r as siteHeaderLine, t as setInvocationProfile } from "./site-BUlQR117.mjs";
|
|
4
4
|
import { a as notifyOfUpdate, o as runRefresh } from "./version-check-CcsA1QjI.mjs";
|
|
5
5
|
import { defineCommand, runMain } from "citty";
|
|
@@ -76,13 +76,13 @@ const main = defineCommand({
|
|
|
76
76
|
token: () => import("./token-BUxgRJVA.mjs").then((m) => m.tokenCommand),
|
|
77
77
|
egress: () => import("./egress-BFSwa8Uu.mjs").then((m) => m.egressCommand),
|
|
78
78
|
schedule: () => import("./schedule-Cq9K0rnE.mjs").then((m) => m.scheduleCommand),
|
|
79
|
-
feedback: () => import("./feedback-
|
|
79
|
+
feedback: () => import("./feedback-DReTDDzD.mjs").then((m) => m.feedbackCommand),
|
|
80
80
|
db: () => import("./db-DKnJQPm5.mjs").then((m) => m.dbCommand),
|
|
81
81
|
usage: () => import("./usage-DjNngyvy.mjs").then((m) => m.usageCommand),
|
|
82
82
|
open: () => import("./open-C5x3tX6I.mjs").then((m) => m.openCommand),
|
|
83
|
-
docs: () => import("./docs-
|
|
84
|
-
skill: () => import("./skill-
|
|
85
|
-
upgrade: () => import("./upgrade-
|
|
83
|
+
docs: () => import("./docs-3pQHiuTn.mjs").then((m) => m.docsCommand),
|
|
84
|
+
skill: () => import("./skill-M4RHvuUB.mjs").then((m) => m.skillCommand),
|
|
85
|
+
upgrade: () => import("./upgrade-C8Xox-P-.mjs").then((m) => m.upgradeCommand),
|
|
86
86
|
logs: () => import("./logs-C53y2eAS.mjs").then((m) => m.logsCommand)
|
|
87
87
|
}
|
|
88
88
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as version } from "./package-
|
|
1
|
+
import { t as version } from "./package-CuyFMXam.mjs";
|
|
2
2
|
import { n as reportErrors } from "./ui-B1Px5y7q.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
import { cpSync, existsSync, mkdirSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
|
|
@@ -112,7 +112,7 @@ const upgradeCommand = defineCommand({
|
|
|
112
112
|
const spec = `${PACKAGE_NAME}@${args.version ?? "latest"}`;
|
|
113
113
|
const command = pmCommand(pm);
|
|
114
114
|
const cmd = installArgs(pm, spec);
|
|
115
|
-
const { skillInstalled } = await import("./skill-
|
|
115
|
+
const { skillInstalled } = await import("./skill-M4RHvuUB.mjs");
|
|
116
116
|
const refreshSkill = skillInstalled(process.cwd());
|
|
117
117
|
console.log(`Upgrading via ${command}: ${command} ${cmd.join(" ")}`);
|
|
118
118
|
await run(command, cmd);
|