@madewithremy/admin 0.1.47 → 0.1.49
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/CHANGELOG.md +17 -0
- package/dist/index.d.ts +50 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/prod.js +74 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,23 @@ What changed in `@madewithremy/admin`, newest first, each version under its own
|
|
|
4
4
|
|
|
5
5
|
Versions before 0.1.44 aren't recorded here.
|
|
6
6
|
|
|
7
|
+
## 0.1.49
|
|
8
|
+
|
|
9
|
+
### New
|
|
10
|
+
|
|
11
|
+
- A sending domain's `returnPathStatus` (`admin.email.addDomain`, `admin.email.verifyDomain`, the domain lists): where its bounce domain stands, `pending`, `verified` or `failed`, or null where the deployment's email provider has none of its own. On the cloud every sending domain gets one, `bounces.<domain>`, and its `dnsInstructions.records` carry its MX and SPF TXT, both recommended. With them published, the domain's mail bounces to the domain itself, so SPF matches the From address for DMARC as DKIM already does. Without them it sends as before.
|
|
12
|
+
- `remy-admin email domains verify` on a sending domain whose bounce domain is `failed` starts it over, once its records are published.
|
|
13
|
+
|
|
14
|
+
### Changed behavior
|
|
15
|
+
|
|
16
|
+
- A sending domain on the cloud no longer lists an SPF TXT for the domain itself. It never applied to the mail, whose envelope sender was the provider's own address; the bounce domain's TXT replaces it. Check: a script that looks for a `v=spf1` record named for the domain.
|
|
17
|
+
|
|
18
|
+
## 0.1.48
|
|
19
|
+
|
|
20
|
+
### New
|
|
21
|
+
|
|
22
|
+
- `remy-admin feedback draft <message>` (`admin.feedback.draft`): opens Send Feedback in the user's editor with the message filled in, for them to review and send. Nothing is sent until they do; a sent report carries the conversation, the sandbox's logs and the editor's state. A deployment that takes no feedback refuses it with `feedback_not_configured`.
|
|
23
|
+
|
|
7
24
|
## 0.1.47
|
|
8
25
|
|
|
9
26
|
### New
|
package/dist/index.d.ts
CHANGED
|
@@ -1130,6 +1130,47 @@ declare namespace cron {
|
|
|
1130
1130
|
export { type cron_CronListParams as CronListParams, list$a as list, run$1 as run };
|
|
1131
1131
|
}
|
|
1132
1132
|
|
|
1133
|
+
/**
|
|
1134
|
+
* Response shapes for the feedback command group — transcribed from the api.
|
|
1135
|
+
*
|
|
1136
|
+
* Sources (apps/api/src/):
|
|
1137
|
+
* roles/http/routes/Apps/develop/feedback.ts
|
|
1138
|
+
*/
|
|
1139
|
+
/** POST /_internal/v2/apps/:appId/feedback-draft */
|
|
1140
|
+
interface FeedbackDraftResult {
|
|
1141
|
+
/** The draft went to the person's open editors on this app. */
|
|
1142
|
+
status: 'sent_to_editor';
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1145
|
+
/**
|
|
1146
|
+
* Feedback operations: a report about Remy itself, to the Remy team.
|
|
1147
|
+
*
|
|
1148
|
+
* Ops are pure: (ctx, params) → typed result, throwing AdminApiError /
|
|
1149
|
+
* AdminTimeoutError. No printing, no process coupling — the CLI skin in
|
|
1150
|
+
* commands/feedback.ts and the importable client both call these.
|
|
1151
|
+
*/
|
|
1152
|
+
|
|
1153
|
+
/**
|
|
1154
|
+
* Open Send Feedback in the person's editor with this message filled in.
|
|
1155
|
+
*
|
|
1156
|
+
* Nothing is sent from here. The person reviews the draft, edits it if they
|
|
1157
|
+
* like, and sends it; the report then carries Remy's conversation, the
|
|
1158
|
+
* sandbox's logs and the editor's state. Only the person's own editors on this
|
|
1159
|
+
* app open it, and only ones open at the time.
|
|
1160
|
+
*
|
|
1161
|
+
* @throws AdminApiError `feedback_not_configured` (404) — this deployment
|
|
1162
|
+
* doesn't take feedback; `missing_message` (400); `message_too_long` (400) —
|
|
1163
|
+
* over 20,000 characters.
|
|
1164
|
+
* @example
|
|
1165
|
+
* await admin.feedback.draft('The preview stopped reloading after every save.');
|
|
1166
|
+
*/
|
|
1167
|
+
declare function draft(ctx: AdminContext, message: string): Promise<FeedbackDraftResult>;
|
|
1168
|
+
|
|
1169
|
+
declare const feedback_draft: typeof draft;
|
|
1170
|
+
declare namespace feedback {
|
|
1171
|
+
export { feedback_draft as draft };
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1133
1174
|
/**
|
|
1134
1175
|
* Response types for the data command group.
|
|
1135
1176
|
*
|
|
@@ -5106,7 +5147,8 @@ interface OutboundDnsRecord {
|
|
|
5106
5147
|
/**
|
|
5107
5148
|
* DNS records to create at the customer's DNS host for outbound sending:
|
|
5108
5149
|
* whatever the deployment's email provider issues (on SES, three DKIM CNAMEs,
|
|
5109
|
-
* all required,
|
|
5150
|
+
* all required, then the bounce domain's MX and SPF TXT on
|
|
5151
|
+
* `bounces.<domain>`, recommended).
|
|
5110
5152
|
*/
|
|
5111
5153
|
interface OutboundDnsInstructions {
|
|
5112
5154
|
records: OutboundDnsRecord[];
|
|
@@ -5116,6 +5158,12 @@ interface OutboundEmailDomainView extends EmailDomainBase {
|
|
|
5116
5158
|
verifiedAt: string | null;
|
|
5117
5159
|
sesVerificationStatus: string | null;
|
|
5118
5160
|
uiStatus: OutboundEmailDomainUiStatus;
|
|
5161
|
+
/**
|
|
5162
|
+
* Where the domain's bounce domain stands (`pending` until its MX is found),
|
|
5163
|
+
* null where the provider has none of its own. Never part of `uiStatus`:
|
|
5164
|
+
* the domain sends without it, from the provider's own bounce address.
|
|
5165
|
+
*/
|
|
5166
|
+
returnPathStatus: 'pending' | 'verified' | 'failed' | null;
|
|
5119
5167
|
verificationErrors: unknown[] | null;
|
|
5120
5168
|
createdAt: string;
|
|
5121
5169
|
dnsInstructions: OutboundDnsInstructions;
|
|
@@ -8866,6 +8914,7 @@ declare function buildClient(ctx: AdminContext): {
|
|
|
8866
8914
|
events: BoundOps<typeof appEvents>;
|
|
8867
8915
|
crashes: BoundOps<typeof crashes>;
|
|
8868
8916
|
cron: BoundOps<typeof cron>;
|
|
8917
|
+
feedback: BoundOps<typeof feedback>;
|
|
8869
8918
|
data: BoundOps<typeof data>;
|
|
8870
8919
|
dataSources: BoundOps<typeof dataSources>;
|
|
8871
8920
|
dataSourceJobs: BoundOps<typeof dataSourceJobs>;
|
package/dist/index.js
CHANGED
|
@@ -361,6 +361,20 @@ function run(ctx, route) {
|
|
|
361
361
|
);
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
+
// src/ops/feedback.ts
|
|
365
|
+
var feedback_exports = {};
|
|
366
|
+
__export(feedback_exports, {
|
|
367
|
+
draft: () => draft
|
|
368
|
+
});
|
|
369
|
+
function draft(ctx, message) {
|
|
370
|
+
return call(
|
|
371
|
+
ctx,
|
|
372
|
+
"POST",
|
|
373
|
+
`/_internal/v2/apps/${ctx.appId}/feedback-draft`,
|
|
374
|
+
{ message }
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
|
|
364
378
|
// src/ops/data.ts
|
|
365
379
|
var data_exports = {};
|
|
366
380
|
__export(data_exports, {
|
|
@@ -3181,6 +3195,7 @@ function buildClient(ctx) {
|
|
|
3181
3195
|
events: bindOps(events_exports, ctx),
|
|
3182
3196
|
crashes: bindOps(crashes_exports, ctx),
|
|
3183
3197
|
cron: bindOps(cron_exports, ctx),
|
|
3198
|
+
feedback: bindOps(feedback_exports, ctx),
|
|
3184
3199
|
data: bindOps(data_exports, ctx),
|
|
3185
3200
|
dataSources: bindOps(dataSources_exports, ctx),
|
|
3186
3201
|
dataSourceJobs: bindOps(dataSourceJobs_exports, ctx),
|