@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 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, and an SPF TXT, recommended; merge it into an existing one).
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),