@go-labs-sg/rsvp 1.5.0 → 1.7.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 +47 -3
- package/dist/index.js +6 -3
- package/examples/amgen-rsvp-copy/README.md +27 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -752,8 +752,9 @@ High-impact payment and retention commands remain protected by their matching fi
|
|
|
752
752
|
|
|
753
753
|
## Registration master list export
|
|
754
754
|
|
|
755
|
-
`export request` queues the
|
|
756
|
-
(
|
|
755
|
+
`export request` queues the **Registration master list** Excel workbook
|
|
756
|
+
(**Master List** by default; optional registration/attendance tabs follow event
|
|
757
|
+
settings and permissions; question columns follow the event's form). The
|
|
757
758
|
payload is `organizationId`, `eventId` and an audit `reason`; the old `dataset`,
|
|
758
759
|
`format` and `filters` fields are ignored. See the RSVP app README for columns.
|
|
759
760
|
|
|
@@ -775,8 +776,40 @@ population. Non-operational statuses remain excluded, and permissions, payment
|
|
|
775
776
|
gates, duplicate protection, and undo behavior are unchanged. The web panel's
|
|
776
777
|
realtime connection and manual refresh controls do not add a CLI subscription.
|
|
777
778
|
|
|
779
|
+
Set `registrationMasterList.includeAttendanceSheets: true` with an approved
|
|
780
|
+
`event setup step update` (`section: "REGISTRATION_RULES"`) to add response-based
|
|
781
|
+
**Attending**, **Not attending** (explicit declines only), and **All** tabs,
|
|
782
|
+
plus the retained **Registered**, **Not Registered**, **Attended** and
|
|
783
|
+
**Not Attended** views. It defaults off. All matches every Master List person,
|
|
784
|
+
including guests and nonrespondents; attending/declined subsets use canonical
|
|
785
|
+
completed responses and never treat nonresponse as a decline.
|
|
786
|
+
Registered includes attending, legacy submitted and declined completed responses;
|
|
787
|
+
actual check-in tabs include only attending/legacy-submitted people and require
|
|
788
|
+
`check-in.view`. An undone check-in returns a person to Not Attended. Preserve
|
|
789
|
+
the other current master-list settings when editing this object.
|
|
790
|
+
|
|
778
791
|
Deploy matching API and export-worker versions together; an old worker would build the retired
|
|
779
|
-
registration-records report for master-list jobs.
|
|
792
|
+
registration-records report for master-list jobs. See the
|
|
793
|
+
[follow-up contract](../../../apps/rsvp/reporting-follow-up.md) for exact tab
|
|
794
|
+
populations, worker-order/rollback gates and the separate later post-draw merge.
|
|
795
|
+
|
|
796
|
+
## Seat-change email presentation
|
|
797
|
+
|
|
798
|
+
In an approved `event setup step update` for `REGISTRATION_RULES`,
|
|
799
|
+
`seatChangeNotification.includeTablemates` controls saved same-table display
|
|
800
|
+
names (default off), and `seatChangeNotification.includeFloorPlanImage` controls
|
|
801
|
+
the inline highlighted floor-plan image (default on). Both accept explicit
|
|
802
|
+
`true` or `false` independently. Preserve the current notification subject/body,
|
|
803
|
+
enabled/automatic state, other registration rules and expected configuration
|
|
804
|
+
version when editing. Omitting either property preserves its stored value.
|
|
805
|
+
|
|
806
|
+
Explicit event presentation values apply to manual and automatic seat-change
|
|
807
|
+
notices, overriding saved-form presentation only; omissions inherit the form.
|
|
808
|
+
These switches do not enable notices, change seats or send/resend email. With
|
|
809
|
+
the image off, text assignments remain and the worker skips map/image work.
|
|
810
|
+
Deploy compatible workers before relying on the switches; old workers do not
|
|
811
|
+
honor the image off-switch. Tablemate-name disclosure still needs privacy
|
|
812
|
+
approval. The web exposes both switches in Registration rules.
|
|
780
813
|
|
|
781
814
|
## Seating updates
|
|
782
815
|
|
|
@@ -1167,6 +1200,17 @@ bun run packages/rsvp/cli/src/index.ts help
|
|
|
1167
1200
|
|
|
1168
1201
|
Building is not publication or permission to mutate live data. Use focused temporary business-behavior tests and the final pre-push gate from the shared workflow. Use this package's actual scripts; do not assume it has a command-artifact generator.
|
|
1169
1202
|
|
|
1203
|
+
This package has no `test` script and no permanent test suite. Put temporary CLI
|
|
1204
|
+
tests under `tests/rsvp/cli/` and run them from the RSVP test workspace:
|
|
1205
|
+
|
|
1206
|
+
```bash
|
|
1207
|
+
bun --filter @go-labs-sg/rsvp build # only when tests exercise dist/index.js
|
|
1208
|
+
cd tests/rsvp && bun test ./cli
|
|
1209
|
+
```
|
|
1210
|
+
|
|
1211
|
+
When no temporary CLI tests exist, `bun test ./cli` exits 1 with `had no matches`.
|
|
1212
|
+
That is an empty suite, not a passing one; record it as such.
|
|
1213
|
+
|
|
1170
1214
|
## Managed organization provisioning
|
|
1171
1215
|
|
|
1172
1216
|
`organization create` requires an `ownerEmail` in its JSON payload and the
|
package/dist/index.js
CHANGED
|
@@ -7957,6 +7957,8 @@ var defaultEventSeatChangeNotification = {
|
|
|
7957
7957
|
var eventSeatChangeNotificationSchema = object({
|
|
7958
7958
|
body: string2().trim().max(1e4).default(""),
|
|
7959
7959
|
automatic: boolean2().optional(),
|
|
7960
|
+
includeTablemates: boolean2().optional(),
|
|
7961
|
+
includeFloorPlanImage: boolean2().optional(),
|
|
7960
7962
|
enabled: boolean2().default(false),
|
|
7961
7963
|
subject: string2().trim().max(240).default("")
|
|
7962
7964
|
}).superRefine((notification, ctx) => {
|
|
@@ -10145,7 +10147,8 @@ var outputKeysSchema = array(string2().min(1).max(160).regex(/^[A-Za-z][A-Za-z0-
|
|
|
10145
10147
|
var eventRegistrationMasterListSchema = object({
|
|
10146
10148
|
omittedOutputKeys: outputKeysSchema.default([]),
|
|
10147
10149
|
finalOutputKeys: outputKeysSchema.default([]),
|
|
10148
|
-
showEligibilityCutoffInHeading: boolean2().default(false)
|
|
10150
|
+
showEligibilityCutoffInHeading: boolean2().default(false),
|
|
10151
|
+
includeAttendanceSheets: boolean2().default(false)
|
|
10149
10152
|
}).strict().refine((config) => !config.finalOutputKeys.some((key) => config.omittedOutputKeys.includes(key)), { message: "Omitted output keys cannot also be final output keys" });
|
|
10150
10153
|
|
|
10151
10154
|
// ../validators/src/event.ts
|
|
@@ -12359,7 +12362,7 @@ var commands = {
|
|
|
12359
12362
|
effects: ["sensitive-data", "state-change"],
|
|
12360
12363
|
operation: (api, input) => api.export.requestExport.mutate(input),
|
|
12361
12364
|
payloadOnly: true,
|
|
12362
|
-
summary: "Request the
|
|
12365
|
+
summary: "Request the event-configured master list XLSX with optional attendance tabs (--payload JSON: eventId, organizationId, reason)."
|
|
12363
12366
|
},
|
|
12364
12367
|
"export list": {
|
|
12365
12368
|
effects: ["sensitive-data"],
|
|
@@ -12564,7 +12567,7 @@ Object.assign(commands, {
|
|
|
12564
12567
|
"event mine list": payloadCommand((api, input) => api.event.listMyEvents.query(input), "List the caller's events (--payload JSON)."),
|
|
12565
12568
|
"event reminder list": payloadCommand((api, input) => api.event.listReminderSegments.query(input), "List reminder segments (--payload JSON).", ["sensitive-data"]),
|
|
12566
12569
|
"event rsvp submit": payloadCommand((api, input) => api.event.submitRsvp.mutate(input), "Submit the caller's registration (--payload JSON).", ["sensitive-data", "state-change"]),
|
|
12567
|
-
"event setup step update": payloadCommand((api, input) => api.event.updateSetupStep.mutate(input), "Update one revision-checked event setup step (--payload JSON). REGISTRATION_RULES accepts registrationEmail presentation (including senderName and a senderLocalPart+senderDomain address on a verified Resend sending domain), registrationMasterList output-key ordering/omissions and seatChangeNotification automatic policy; omitted settings are preserved.", ["state-change"]),
|
|
12570
|
+
"event setup step update": payloadCommand((api, input) => api.event.updateSetupStep.mutate(input), "Update one revision-checked event setup step (--payload JSON). REGISTRATION_RULES accepts registrationEmail presentation (including senderName and a senderLocalPart+senderDomain address on a verified Resend sending domain), registrationMasterList output-key ordering/omissions and includeAttendanceSheets, and seatChangeNotification automatic/includeTablemates/includeFloorPlanImage policy (tablemate names default off; floor-plan image defaults on); omitted settings are preserved.", ["state-change"]),
|
|
12568
12571
|
"event page update": payloadCommand((api, input) => api.event.updateSetupStep.mutate({
|
|
12569
12572
|
...input,
|
|
12570
12573
|
section: "DETAILS_PAGE"
|
|
@@ -145,6 +145,33 @@ to events without automatic notices; the flag grants approval but does not
|
|
|
145
145
|
itself enable sending. Non-seating profile/menu updates and saving or discarding
|
|
146
146
|
a draft do not acquire an email effect.
|
|
147
147
|
|
|
148
|
+
## Follow-up reporting and tablemates (#1657)
|
|
149
|
+
|
|
150
|
+
The optional workbook tabs (`registrationMasterList.includeAttendanceSheets`)
|
|
151
|
+
and tablemate display names (`seatChangeNotification.includeTablemates`) are
|
|
152
|
+
off by default. The existing example fragment intentionally does not activate
|
|
153
|
+
them. Preserve the full current configuration and obtain event privacy approval
|
|
154
|
+
before opting in. Clients omitting `includeTablemates` retain the stored value;
|
|
155
|
+
explicit `false` disables it. See the
|
|
156
|
+
[generic follow-up contract](../../../../../apps/rsvp/reporting-follow-up.md)
|
|
157
|
+
for exact tab populations and delivery privacy boundaries. The web also exposes
|
|
158
|
+
independent **Include tablemate names** and **Include floor-plan image** switches.
|
|
159
|
+
The latter is `seatChangeNotification.includeFloorPlanImage` (default on; false
|
|
160
|
+
omits map loading, image generation and attachment while retaining text seats).
|
|
161
|
+
Explicit current-event presentation values apply to manual and automatic notices
|
|
162
|
+
without changing notice enablement or copy. Deploy all email workers before
|
|
163
|
+
relying on the image off-switch. Post-draw results
|
|
164
|
+
will later merge the RSVP export with the Event Tech lucky-draw export; this
|
|
165
|
+
change does not infer winners from eligibility or create result placeholders.
|
|
166
|
+
|
|
167
|
+
**Worker-order warning:** upgrade/fence all email workers before enabling
|
|
168
|
+
automatic policy for historical forms. An old worker can skip a new notice
|
|
169
|
+
using old saved-form settings and mark it complete. Deploy matching export
|
|
170
|
+
workers before requesting optional tabs as well. For rollback, pause/fence
|
|
171
|
+
producers and workers, disable the new policies with a compatible API after
|
|
172
|
+
approval, and reconcile queued/in-flight messages before old workers consume
|
|
173
|
+
them. Never automatically resend skipped/completed jobs.
|
|
174
|
+
|
|
148
175
|
Production deployment, event configuration writes, live submissions/reseating,
|
|
149
176
|
export jobs, resends and any real provider send require explicit approval and
|
|
150
177
|
readback. Local HTML/XLSX and synthetic browser checks are not live acceptance.
|