feedbackbasket-cli 0.10.0 → 0.12.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.
- package/README.md +336 -300
- package/dist/src/cli.js +2 -0
- package/dist/src/client.d.ts +9 -1
- package/dist/src/client.js +13 -0
- package/dist/src/commands/feedback-reply.d.ts +2 -0
- package/dist/src/commands/feedback-reply.js +51 -32
- package/dist/src/commands/feedback.js +2 -1
- package/dist/src/commands/mobile.d.ts +7 -0
- package/dist/src/commands/mobile.js +319 -0
- package/dist/src/commands/widget.js +6 -1
- package/dist/src/help.js +4 -1
- package/dist/src/types.d.ts +32 -1
- package/dist/src/version.d.ts +2 -2
- package/dist/src/version.js +1 -1
- package/package.json +49 -48
- package/skills/feedbackbasket/SKILL.md +390 -330
package/README.md
CHANGED
|
@@ -1,300 +1,336 @@
|
|
|
1
|
-
# FeedbackBasket CLI
|
|
2
|
-
|
|
3
|
-
Command-line interface for [FeedbackBasket](https://feedbackbasket.com) — manage feedback, bug reports, projects, and widgets from your terminal or through AI agents.
|
|
4
|
-
|
|
5
|
-
Inspired by the [Basecamp CLI](https://github.com/basecamp/basecamp-cli). Everything you can do in the dashboard, you can do from the CLI.
|
|
6
|
-
|
|
7
|
-
## Quick Start
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Install
|
|
11
|
-
npm install -g feedbackbasket-cli
|
|
12
|
-
|
|
13
|
-
# Authenticate (opens browser, full access by default)
|
|
14
|
-
feedbackbasket login
|
|
15
|
-
|
|
16
|
-
# Or use a token directly (for CI/headless)
|
|
17
|
-
feedbackbasket login --token fb_cli_your_token_here
|
|
18
|
-
|
|
19
|
-
# Remote server flow: use when localhost browser callbacks cannot reach the CLI
|
|
20
|
-
feedbackbasket login --manual
|
|
21
|
-
|
|
22
|
-
# Start exploring
|
|
23
|
-
feedbackbasket projects list
|
|
24
|
-
feedbackbasket feedback list
|
|
25
|
-
feedbackbasket feedback create "Login button is broken" --project myapp --type bug
|
|
26
|
-
feedbackbasket bugs list --severity high
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
The first time you log in, a setup wizard walks you through selecting a default project and installing the Claude Code skill.
|
|
30
|
-
|
|
31
|
-
## Agent Usage
|
|
32
|
-
|
|
33
|
-
Any AI agent with shell access (Claude Code, Codex, Cursor, OpenCode) can use the CLI directly:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Agents should use --agent flag for raw JSON output
|
|
37
|
-
feedbackbasket projects list --agent
|
|
38
|
-
feedbackbasket feedback list --category BUG --agent
|
|
39
|
-
feedbackbasket feedback create "Login button is broken" --content "Clicking Log in does nothing in Safari." --project myapp --type bug --agent
|
|
40
|
-
feedbackbasket feedback update <id> --status PLANNED --agent
|
|
41
|
-
feedbackbasket widget script myproject --agent
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
feedbackbasket login
|
|
59
|
-
feedbackbasket login --
|
|
60
|
-
feedbackbasket
|
|
61
|
-
feedbackbasket
|
|
62
|
-
feedbackbasket auth
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
feedbackbasket projects
|
|
74
|
-
feedbackbasket projects
|
|
75
|
-
feedbackbasket projects create "
|
|
76
|
-
feedbackbasket projects
|
|
77
|
-
feedbackbasket projects update myapp --
|
|
78
|
-
feedbackbasket projects
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
feedbackbasket feedback list
|
|
89
|
-
feedbackbasket feedback list --
|
|
90
|
-
feedbackbasket feedback list --
|
|
91
|
-
feedbackbasket feedback list --
|
|
92
|
-
feedbackbasket feedback list --
|
|
93
|
-
feedbackbasket feedback
|
|
94
|
-
feedbackbasket feedback
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
feedbackbasket feedback create "
|
|
99
|
-
feedbackbasket feedback
|
|
100
|
-
feedbackbasket feedback update <id> --
|
|
101
|
-
feedbackbasket feedback
|
|
102
|
-
feedbackbasket feedback reply <id> "Thanks!" --delivery
|
|
103
|
-
feedbackbasket feedback reply <id> "Thanks!" --delivery
|
|
104
|
-
feedbackbasket feedback
|
|
105
|
-
feedbackbasket feedback
|
|
106
|
-
feedbackbasket feedback
|
|
107
|
-
feedbackbasket feedback
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
feedbackbasket feedback export myapp --format
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
feedbackbasket bugs list
|
|
121
|
-
feedbackbasket bugs
|
|
122
|
-
feedbackbasket bugs
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
feedbackbasket widget settings myapp --
|
|
135
|
-
feedbackbasket widget settings myapp --
|
|
136
|
-
feedbackbasket widget settings myapp --
|
|
137
|
-
feedbackbasket widget settings myapp --
|
|
138
|
-
feedbackbasket widget settings myapp --
|
|
139
|
-
feedbackbasket widget settings myapp --
|
|
140
|
-
feedbackbasket widget settings myapp --
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
feedbackbasket widget
|
|
144
|
-
feedbackbasket widget
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
feedbackbasket widget
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
`
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
"
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
|
264
|
-
|
|
265
|
-
| `
|
|
266
|
-
| `
|
|
267
|
-
|
|
268
|
-
###
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
1
|
+
# FeedbackBasket CLI
|
|
2
|
+
|
|
3
|
+
Command-line interface for [FeedbackBasket](https://feedbackbasket.com) — manage feedback, bug reports, projects, and widgets from your terminal or through AI agents.
|
|
4
|
+
|
|
5
|
+
Inspired by the [Basecamp CLI](https://github.com/basecamp/basecamp-cli). Everything you can do in the dashboard, you can do from the CLI.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Install
|
|
11
|
+
npm install -g feedbackbasket-cli
|
|
12
|
+
|
|
13
|
+
# Authenticate (opens browser, full access by default)
|
|
14
|
+
feedbackbasket login
|
|
15
|
+
|
|
16
|
+
# Or use a token directly (for CI/headless)
|
|
17
|
+
feedbackbasket login --token fb_cli_your_token_here
|
|
18
|
+
|
|
19
|
+
# Remote server flow: use when localhost browser callbacks cannot reach the CLI
|
|
20
|
+
feedbackbasket login --manual
|
|
21
|
+
|
|
22
|
+
# Start exploring
|
|
23
|
+
feedbackbasket projects list
|
|
24
|
+
feedbackbasket feedback list
|
|
25
|
+
feedbackbasket feedback create "Login button is broken" --project myapp --type bug
|
|
26
|
+
feedbackbasket bugs list --severity high
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The first time you log in, a setup wizard walks you through selecting a default project and installing the Claude Code skill.
|
|
30
|
+
|
|
31
|
+
## Agent Usage
|
|
32
|
+
|
|
33
|
+
Any AI agent with shell access (Claude Code, Codex, Cursor, OpenCode) can use the CLI directly:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Agents should use --agent flag for raw JSON output
|
|
37
|
+
feedbackbasket projects list --agent
|
|
38
|
+
feedbackbasket feedback list --category BUG --agent
|
|
39
|
+
feedbackbasket feedback create "Login button is broken" --content "Clicking Log in does nothing in Safari." --project myapp --type bug --agent
|
|
40
|
+
feedbackbasket feedback update <id> --status PLANNED --agent
|
|
41
|
+
feedbackbasket widget script myproject --agent
|
|
42
|
+
feedbackbasket mobile setup myproject --bundle-id com.example.app --include-publishable-key --agent
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
When installing or configuring a widget for the current app, agents should not rely on the CLI default project. First run `feedbackbasket projects list --agent`, match the current app by its real website URL or clearly matching project name, and only create a new project after confirming no existing project belongs to this app. If the only known URL is `localhost`, ask for the production, staging, preview, or intended public URL before creating the project.
|
|
46
|
+
|
|
47
|
+
### Install Claude Code Skill
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
feedbackbasket setup claude
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Commands
|
|
54
|
+
|
|
55
|
+
### Authentication
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
feedbackbasket login # Browser OAuth flow (alias for auth login)
|
|
59
|
+
feedbackbasket login --manual # No localhost browser callback (remote servers)
|
|
60
|
+
feedbackbasket login --token <token> # Use an existing CLI token (CI / scripts)
|
|
61
|
+
feedbackbasket logout # Clear credentials (alias for auth logout)
|
|
62
|
+
feedbackbasket auth status # Show auth state, scope, default project
|
|
63
|
+
feedbackbasket auth token # Print raw token (for scripting/piping)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
CLI tokens start with `fb_cli_`. MCP API keys start with `fb_key_` and are only for MCP server configuration.
|
|
67
|
+
|
|
68
|
+
### Projects
|
|
69
|
+
|
|
70
|
+
All project commands accept **name or ID** (e.g. `feedbackbasket` or `cmn3c7sgv...`).
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
feedbackbasket projects list # List all projects with stats
|
|
74
|
+
feedbackbasket projects show <name-or-id> # Project details
|
|
75
|
+
feedbackbasket projects create "My App" --url https://... # Create project
|
|
76
|
+
feedbackbasket projects create "Local Test" --url http://localhost:3000 --allow-local-url
|
|
77
|
+
feedbackbasket projects update myapp --name "New Name" # Update project
|
|
78
|
+
feedbackbasket projects update myapp --reply-to vlad@example.com # Set default reply-to email
|
|
79
|
+
feedbackbasket projects delete myapp # Delete (with confirmation)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use the production, staging, preview, or intended public website URL for projects. The CLI blocks accidental `localhost`/loopback URLs in agent and non-interactive mode unless you pass `--allow-local-url` for an explicitly local-only test project.
|
|
83
|
+
|
|
84
|
+
### Feedback
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Read
|
|
88
|
+
feedbackbasket feedback list # List recent feedback
|
|
89
|
+
feedbackbasket feedback list --project myapp # Filter by project
|
|
90
|
+
feedbackbasket feedback list --category BUG # Filter by category
|
|
91
|
+
feedbackbasket feedback list --status OPEN # Filter by status
|
|
92
|
+
feedbackbasket feedback list --sentiment NEGATIVE # Filter by sentiment
|
|
93
|
+
feedbackbasket feedback list --search "login issue" # Text search
|
|
94
|
+
feedbackbasket feedback show <id> # View detail, including attachment links
|
|
95
|
+
feedbackbasket feedback search "crash on mobile" # Search shortcut
|
|
96
|
+
|
|
97
|
+
# Write
|
|
98
|
+
feedbackbasket feedback create "Title" --content "Body" --project myapp
|
|
99
|
+
feedbackbasket feedback create "Login bug" --content "Clicking Log in does nothing" --project myapp --type bug --page-url https://example.com/login
|
|
100
|
+
feedbackbasket feedback update <id> --status PLANNED # Update status
|
|
101
|
+
feedbackbasket feedback update <id> --category BUG # Update category
|
|
102
|
+
feedbackbasket feedback reply <id> "Thanks!" --delivery email --reply-to support@example.com
|
|
103
|
+
feedbackbasket feedback reply <id> "Thanks!" --delivery widget
|
|
104
|
+
feedbackbasket feedback reply <id> "Thanks!" --delivery in-app
|
|
105
|
+
feedbackbasket feedback reply <id> "Thanks!" --delivery both --reply-to support@example.com
|
|
106
|
+
feedbackbasket feedback replies <id> # Show the complete conversation
|
|
107
|
+
feedbackbasket feedback note <id> "Investigating this..." # Add internal note
|
|
108
|
+
feedbackbasket feedback delete <id> # Delete feedback
|
|
109
|
+
feedbackbasket feedback bulk-update --status CLOSED --ids id1,id2,id3
|
|
110
|
+
|
|
111
|
+
# Export
|
|
112
|
+
feedbackbasket feedback export myapp --format csv # Export to CSV
|
|
113
|
+
feedbackbasket feedback export myapp --format md # Export to Markdown
|
|
114
|
+
feedbackbasket feedback export myapp --format json # Export to JSON
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Bug Reports
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
feedbackbasket bugs list # All bugs
|
|
121
|
+
feedbackbasket bugs list --severity high # High severity only
|
|
122
|
+
feedbackbasket bugs list --status OPEN # Open bugs
|
|
123
|
+
feedbackbasket bugs stats # Bug statistics summary
|
|
124
|
+
feedbackbasket bugs stats --project myapp # Per-project stats
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Widget
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# View current settings
|
|
131
|
+
feedbackbasket widget settings myapp
|
|
132
|
+
|
|
133
|
+
# Update widget configuration
|
|
134
|
+
feedbackbasket widget settings myapp --capture-mode waitlist
|
|
135
|
+
feedbackbasket widget settings myapp --capture-mode feedback
|
|
136
|
+
feedbackbasket widget settings myapp --color "#22c55e" --label "Send Feedback"
|
|
137
|
+
feedbackbasket widget settings myapp --position bottom-left --display modal
|
|
138
|
+
feedbackbasket widget settings myapp --email-required --intro "How can we improve?"
|
|
139
|
+
feedbackbasket widget settings myapp --button-radius 10 --button-size regular
|
|
140
|
+
feedbackbasket widget settings myapp --show-email --allow-attachments
|
|
141
|
+
feedbackbasket widget settings myapp --allow-visitor-replies
|
|
142
|
+
feedbackbasket widget settings myapp --no-allow-visitor-replies
|
|
143
|
+
feedbackbasket widget settings myapp --email-read-only --hide-email-when-prefilled
|
|
144
|
+
feedbackbasket widget settings myapp --error-tracking --allow-console-errors
|
|
145
|
+
|
|
146
|
+
# Configure guided feedback types and follow-up questions
|
|
147
|
+
feedbackbasket widget flow myapp
|
|
148
|
+
feedbackbasket widget flow myapp --enable # guided only when requested
|
|
149
|
+
feedbackbasket widget flow myapp --reset-default --enable # guided only when requested
|
|
150
|
+
feedbackbasket widget flow myapp --config ./feedback-flow.json
|
|
151
|
+
|
|
152
|
+
# Get embed code (ready to paste into your HTML)
|
|
153
|
+
feedbackbasket widget script myapp
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Waitlist mode uses the same project script. Add `data-feedbackbasket-waitlist` to your own form, with a required `email` field and optional `name` field. The CLI's `widget script` output shows a starter form when waitlist mode is active.
|
|
157
|
+
|
|
158
|
+
### Waitlist
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
feedbackbasket waitlist list myapp
|
|
162
|
+
feedbackbasket waitlist list myapp --search "@example.com" --limit 50 --offset 0
|
|
163
|
+
feedbackbasket waitlist list myapp --agent
|
|
164
|
+
feedbackbasket waitlist export myapp
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Waitlist listing returns emails, optional names, source pages, total counts, the active capture mode, and pagination. Export prints the dashboard-compatible CSV to stdout.
|
|
168
|
+
|
|
169
|
+
For inline trigger mode, load the widget once and call the public API from your own button:
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<button onclick="window.FeedbackWidget.openFeedbackForm({ trigger: event.currentTarget })">
|
|
173
|
+
Feedback
|
|
174
|
+
</button>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Passing the trigger element lets popup mode open beside your custom button. Calling `window.FeedbackWidget.openFeedbackForm()` with no arguments still uses the configured widget position.
|
|
178
|
+
|
|
179
|
+
Use only the public `openFeedbackForm()` API from the snippet. Do not call internal or undocumented methods such as `open()` or `openModal()`.
|
|
180
|
+
|
|
181
|
+
Use `--email-read-only` and `--hide-email-when-prefilled` with runtime `userEmail` values from your app. These settings do not store visitor emails in FeedbackBasket widget settings.
|
|
182
|
+
|
|
183
|
+
The default widget experience is a basic modal. Only switch to popup mode or enable guided feedback when you intentionally want that flow.
|
|
184
|
+
|
|
185
|
+
`widget flow --config` accepts either a `feedbackFlow` object or a JSON object with a `feedbackFlow` key. V1 supports guided mode with `text`, `textarea`, and `single_choice` follow-up questions.
|
|
186
|
+
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"enabled": true,
|
|
190
|
+
"mode": "guided",
|
|
191
|
+
"types": [
|
|
192
|
+
{
|
|
193
|
+
"id": "bug",
|
|
194
|
+
"emoji": "🐞",
|
|
195
|
+
"label": "Bug report",
|
|
196
|
+
"description": "Something is broken or not working",
|
|
197
|
+
"questions": [
|
|
198
|
+
{
|
|
199
|
+
"id": "steps",
|
|
200
|
+
"label": "What steps can reproduce it?",
|
|
201
|
+
"type": "textarea"
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Mobile Apps
|
|
210
|
+
|
|
211
|
+
Mobile setup is additive and does not change the website widget. The `fb_mobile_` value is a publishable, write-only project identifier designed to ship in an app; it is not a CLI token or private API key. Mobile commands mask it unless `--include-publishable-key` is explicitly supplied.
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Enable mobile feedback and add allowed iOS bundle IDs
|
|
215
|
+
feedbackbasket mobile setup myapp --bundle-id com.example.app
|
|
216
|
+
|
|
217
|
+
# Return the publishable key and hosted form URL for an authorized app setup
|
|
218
|
+
feedbackbasket mobile setup myapp --bundle-id com.example.app --include-publishable-key --agent
|
|
219
|
+
|
|
220
|
+
# Inspect and verify the SDK heartbeat
|
|
221
|
+
feedbackbasket mobile status myapp
|
|
222
|
+
feedbackbasket mobile verify myapp --bundle-id com.example.app --wait 120
|
|
223
|
+
|
|
224
|
+
# Let users answer team replies in the original in-app conversation
|
|
225
|
+
feedbackbasket mobile conversations myapp --enable
|
|
226
|
+
feedbackbasket mobile conversations myapp --disable
|
|
227
|
+
|
|
228
|
+
# Add or remove bundle IDs without replacing the others
|
|
229
|
+
feedbackbasket mobile bundle-ids myapp --add com.example.app.beta
|
|
230
|
+
feedbackbasket mobile bundle-ids myapp --remove com.example.app.beta
|
|
231
|
+
|
|
232
|
+
# Actions that can interrupt installed apps require explicit confirmation
|
|
233
|
+
feedbackbasket mobile disable myapp --yes
|
|
234
|
+
feedbackbasket mobile rotate-key myapp --yes --include-publishable-key
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Agents should never repeat the full publishable key in their final response. They must never place `fb_cli_` or `fb_key_` credentials in a mobile app. Key rotation invalidates the previous key and therefore requires explicit user authorization.
|
|
238
|
+
|
|
239
|
+
The native Swift SDK securely stores conversation credentials in the app Keychain, shows an unread badge when the team replies, and lets users answer inside the same thread when mobile conversations are enabled. Host apps do not need to build an inbox or manage reply tokens. Hosted-form integrations remain email-only. Website widget follow-up replies are configured independently with `widget settings`.
|
|
240
|
+
|
|
241
|
+
### Team
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
feedbackbasket team list # List organization members
|
|
245
|
+
feedbackbasket team role <memberId> --role admin # Update member role
|
|
246
|
+
feedbackbasket team remove <memberId> # Remove member
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Utilities
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
feedbackbasket doctor # Run diagnostics (auth, connectivity, integrations)
|
|
253
|
+
feedbackbasket setup claude # Install Claude Code skill
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Output Modes
|
|
257
|
+
|
|
258
|
+
The CLI automatically detects your environment:
|
|
259
|
+
|
|
260
|
+
| Context | Behavior |
|
|
261
|
+
|---------|----------|
|
|
262
|
+
| **Terminal (TTY)** | Styled, human-readable output with FeedbackBasket brand colors |
|
|
263
|
+
| **Piped** | JSON output automatically |
|
|
264
|
+
| `--json` | Full JSON envelope with breadcrumbs |
|
|
265
|
+
| `--quiet` / `--agent` | Raw JSON data only (no envelope) |
|
|
266
|
+
| `--md` | Markdown formatted |
|
|
267
|
+
|
|
268
|
+
### JSON Envelope
|
|
269
|
+
|
|
270
|
+
```json
|
|
271
|
+
{
|
|
272
|
+
"ok": true,
|
|
273
|
+
"data": [...],
|
|
274
|
+
"summary": "12 open bugs, 3 high severity",
|
|
275
|
+
"breadcrumbs": [
|
|
276
|
+
{ "action": "View high severity", "cmd": "feedbackbasket bugs list --severity high" }
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Breadcrumbs suggest the next logical command — useful for both humans and agents navigating without a full command catalog.
|
|
282
|
+
|
|
283
|
+
## Configuration
|
|
284
|
+
|
|
285
|
+
Credentials stored in `~/.config/feedbackbasket/credentials.json`. Config in `~/.config/feedbackbasket/config.json`.
|
|
286
|
+
|
|
287
|
+
### Default Project
|
|
288
|
+
|
|
289
|
+
Set during the login wizard, or manually:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# Commands auto-scope to your default project
|
|
293
|
+
feedbackbasket feedback list # uses default project
|
|
294
|
+
feedbackbasket feedback list --project other-app # override
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Environment Variables
|
|
298
|
+
|
|
299
|
+
| Variable | Description |
|
|
300
|
+
|----------|-------------|
|
|
301
|
+
| `FEEDBACKBASKET_TOKEN` | CLI token (bypasses stored credentials) |
|
|
302
|
+
| `FEEDBACKBASKET_BASE_URL` | API base URL override |
|
|
303
|
+
|
|
304
|
+
### Global Flags
|
|
305
|
+
|
|
306
|
+
| Flag | Description |
|
|
307
|
+
|------|-------------|
|
|
308
|
+
| `--json` | Full JSON envelope output |
|
|
309
|
+
| `--quiet` / `--agent` | Raw JSON data only |
|
|
310
|
+
| `--md` | Markdown output |
|
|
311
|
+
| `--base-url <url>` | Override API base URL |
|
|
312
|
+
|
|
313
|
+
## Filter Options
|
|
314
|
+
|
|
315
|
+
| Type | Values |
|
|
316
|
+
|------|--------|
|
|
317
|
+
| **Categories** | `BUG`, `FEATURE_REQUEST`, `IMPROVEMENT`, `QUESTION` |
|
|
318
|
+
| **Statuses** | `OPEN`, `UNDER_REVIEW`, `PLANNED`, `IN_PROGRESS`, `COMPLETE`, `CLOSED` |
|
|
319
|
+
| **Sentiments** | `POSITIVE`, `NEGATIVE`, `NEUTRAL` |
|
|
320
|
+
| **Bug Severity** | `high`, `medium`, `low` |
|
|
321
|
+
|
|
322
|
+
## Development
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
git clone https://github.com/deifos/feedbackbasket-cli.git
|
|
326
|
+
cd feedbackbasket-cli
|
|
327
|
+
npm install
|
|
328
|
+
npm run dev -- --help # Run in development
|
|
329
|
+
npm run build # Build for production
|
|
330
|
+
npm run dev -- login # Test login flow
|
|
331
|
+
npm run dev -- doctor # Test diagnostics
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## License
|
|
335
|
+
|
|
336
|
+
MIT
|