@myapihq/cli 2.13.0 → 2.14.0

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.
@@ -56,14 +56,24 @@ export async function list(flags) {
56
56
  // that explicitly, having been bitten by the opposite in CRM search.
57
57
  const shown = page.items?.length ?? 0;
58
58
  info(shown === page.total ? `${shown} item${shown === 1 ? '' : 's'}` : `${shown} of ${page.total} items`);
59
+ // The table cannot carry a signed URL, a selector and a navigation trace, so
60
+ // it flags what exists and --json carries it. Saying nothing about a
61
+ // screenshot would leave a picture nobody knows to look for.
59
62
  printTable((page.items ?? []).map(i => ({
60
63
  id: i.id,
61
64
  kind: i.kind,
62
65
  status: i.status,
63
66
  body: i.body.length > 60 ? `${i.body.slice(0, 57)}…` : i.body,
64
67
  route: i.route ?? i.page_url ?? '',
68
+ // A failed signature still means a picture is there — distinguish that
69
+ // from having none, rather than showing both as blank.
70
+ shot: i.screenshot_url ? 'yes' : (i.screenshot_asset_id ? 'unsigned' : ''),
65
71
  created: i.created_at ? formatDate(i.created_at) : '',
66
72
  })), { flags, empty: 'No feedback yet. Put a widget on a page: myapi feedback widget create <name>' });
73
+ const withShots = (page.items ?? []).filter(i => i.screenshot_url || i.screenshot_asset_id).length;
74
+ if (withShots > 0 && !flags.json) {
75
+ info(`${withShots} item${withShots === 1 ? ' has' : 's have'} a screenshot — \`--json\` carries the link (signed, ~1h).`);
76
+ }
67
77
  if (page.has_more)
68
78
  info('More available — raise --limit or pass --offset.');
69
79
  }
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: my-feedback-api
3
- version: 1.3.0
3
+ version: 1.4.0
4
4
  description: >
5
5
  Collect feedback from the people using what you built. A public widget key lets a page submit without a credential; you list, filter and resolve the results. Kind is chosen by the person reporting, not inferred from their wording.
6
6
  triggers: [feedback, bug report, user feedback, feature request, widget, support, complaints, praise]
7
- checksum: sha256-de137a7db55ba3173aecdd489b4568e66166a0d6c145f5a9fa165c5ef252bc01
7
+ checksum: sha256-b8a6dbed6fa4aa393e538225ae611f5f5d8c4fbb1ffea7922e4a0286d984eca4
8
8
  ---
9
9
 
10
10
  # MyFeedbackAPI
@@ -52,9 +52,15 @@ A wrong key does not break the page: the response is `application/javascript`
52
52
  carrying a JS comment that names the fix, so a typo cannot throw a syntax error
53
53
  in your app.
54
54
 
55
- **No screenshots.** The submit body takes no image and there is no multipart
56
- form `target_selector` / `target_region` are the platform's answer to "where
57
- were they pointing". Do not build a capture step expecting somewhere to put it.
55
+ **Screenshots are automatic you do not build a capture step.** When someone
56
+ opens the feedback sheet the widget fetches a renderer on demand and attaches
57
+ the picture itself, as a second call after the report is saved. That ordering is
58
+ deliberate: an image that fails to render or upload never costs the report.
59
+
60
+ The image is **stored private in your org's assets**, and listing feedback
61
+ returns a **signed link good for about an hour** (`screenshot_url`). It is
62
+ signed on read, so it is not stable — re-list rather than persisting it. PNG,
63
+ JPEG or WebP up to 3 MB; over that the feedback is kept without the picture.
58
64
 
59
65
  ### Submitting by hand (only if you cannot use the script)
60
66
 
@@ -86,6 +92,11 @@ processed signal.
86
92
 
87
93
  ### Reading it back
88
94
 
95
+ Each item also carries what was pointed at (`target_selector`, `target_region`,
96
+ `target_context`), how they got there (`trace`), the `viewport`, and
97
+ `screenshot_url` when there is a picture. The table flags which items have one;
98
+ `--json` carries the link.
99
+
89
100
  `myapi feedback list` is newest first, filterable by `--kind` and `--status`
90
101
  (`open` | `resolved`), paged with `--limit` / `--offset`. **`total` is the
91
102
  number of matches, not the size of the page**, and `has_more` flags a truncated
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@myapihq/cli",
3
3
  "license": "Apache-2.0",
4
- "version": "2.13.0",
4
+ "version": "2.14.0",
5
5
  "description": "MyAPI command-line interface",
6
6
  "repository": {
7
7
  "type": "git",
@@ -46,7 +46,7 @@
46
46
  "lint:skills:strict": "node scripts/copy-skills.js && node scripts/lint-skills.js --strict"
47
47
  },
48
48
  "dependencies": {
49
- "@myapihq/sdk": "^2.13.0"
49
+ "@myapihq/sdk": "^2.14.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^25.6.0",