frontpage-host 0.3.3 → 0.3.4
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/AGENTS.md +1 -1
- package/MAIL.md +2 -2
- package/PEOPLE.md +15 -4
- package/README.md +1 -1
- package/dist/registry.js +3 -2
- package/llms.txt +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -284,7 +284,7 @@ See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker
|
|
|
284
284
|
|
|
285
285
|
Rule placement: read a rule revision, then use `people workspace rules.place` with `id`, `owner` and `expectedRevision`. This only organizes the rule; it does not change its trigger or execution. New UI rules/attachments save paused. Generic attachment calls still need explicit `enabled:false` for paused creation. Saved optional conditions and exact duration minutes remain supported through CLI and agent calls.
|
|
286
286
|
|
|
287
|
-
Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
|
287
|
+
The workspace validates and saves unfinished group settings before opening email setup. CLI and agent callers use `groups.create` / `groups.update` with a stable `requestKey` before attaching; `groups.count` reads the full visible match count. Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
|
288
288
|
|
|
289
289
|
### People workspace navigation and selection
|
|
290
290
|
|
package/MAIL.md
CHANGED
|
@@ -35,7 +35,7 @@ The workspace's Back button returns to the source series. If template edits are
|
|
|
35
35
|
|
|
36
36
|
Group details has an Email section. It shows ordinary rules whose actual trigger is someone joining that group and whose actions send a template or start a series. It uses the same records as Rules. Saved conditions and extra actions stay visible. Moving a rule's placement does not change where it runs.
|
|
37
37
|
|
|
38
|
-
Use the shared Add email control to select a saved template, create a template, or use a saved series. Stage Manage rules uses the same template task. Save the group
|
|
38
|
+
Use the shared Add email control to select a saved template, create a template, or use a saved series. Stage Manage rules uses the same template task. With unsaved group edits, the workspace labels the action **Save group & add email**. Choosing an action validates and saves the group before opening the picker or editor. Missing conditions stay on the group page with an error. A failed group save retains the inputs and does not navigate. Canceling email setup leaves the group saved without a new attachment. Creating or attaching saves one **paused** rule with no extra conditions. A notice beside attached paused emails says to click Activate. Nothing activates, enrolls or sends until the owner explicitly activates the rule for future events. The older `attachments.create` operation keeps its documented defaults; the new completion below always creates paused rules.
|
|
39
39
|
|
|
40
40
|
The existing command and agent operation handle the complete save:
|
|
41
41
|
|
|
@@ -67,7 +67,7 @@ The response returns `complete:true`, `document` and `rule`. Repeating the same
|
|
|
67
67
|
|
|
68
68
|
To attach an existing source, omit `document`. Add either `attachment.templateId` or `attachment.seriesId` and its `expectedSourceUpdatedAt` from a fresh template/series get. A series needs at least one saved step. The result includes the source and paused rule. To edit shared content from an existing entry rule, supply the existing document with `expectedUpdatedAt`, plus `attachment.ruleId` and `expectedRevision` from `rules.get`. This saves the content while leaving the rule's conditions, actions, version, enabled state, activation time and history unchanged. Stale group, stage, source or rule checks return a conflict; keep the draft and review the saved records before making a revised request.
|
|
69
69
|
|
|
70
|
-
The workspace uses the existing template editor and returns to the source group or Stages after Save &
|
|
70
|
+
The workspace uses the existing template editor and returns to the source group or Stages after Save email & attach to group. Unfinished group, rule, stage, picker and template edits stay in memory only. Leaving uses the shared unsaved-changes modal: Cancel keeps editing; Discard and continue loses those edits and leaves without a network request. Refresh or closing the tab discards unfinished work without a browser prompt. Clean navigation and opening saved records show no warning. There is no editor backup or Recover save action. A template task keeps its source context in memory during the active flow; a refreshed task must be reopened from its source. A self-test sends only test content and does not complete a pending group task. Retry a submitted save with the exact original key and payload after a lost response; this does not require an editor backup.
|
|
71
71
|
|
|
72
72
|
Templates remain shared. Changes affect future uses; already queued messages keep their content snapshots. Template get exposes `ruleUsage`; the UI also shows rule usage beside existing dependencies. Deleting a template used by a live rule, including a paused rule, fails with a conflict naming the rule. Remove the template action or archive the rule first. Series, form and receipt dependencies still apply. Archiving a rule keeps its run history and saved actions. Never activate, enroll or send without the user's instruction.
|
|
73
73
|
|
package/PEOPLE.md
CHANGED
|
@@ -91,6 +91,16 @@ frontpage people workspace membership.addMany --file selected-people.json --site
|
|
|
91
91
|
|
|
92
92
|
`groups.preview` accepts `limit` (1 to 200, default 200) and `cursor`, and returns `checked`, `unknown`, `matches` and `nextCursor`. A page can have no matches while more people remain to check. Counts describe the people checked so far, not saved membership. Match rows include phone as well as email. Pass `expectedConditions` with a saved group ID to reject a changed condition/mode between pages. Explicit `conditions` previews edits without saving them. Neither preview changes membership or sends emails.
|
|
93
93
|
|
|
94
|
+
`groups.count` accepts a saved group `id` or explicit `conditions` and returns `matched`, `checked`, `unknown`, `complete` and `sendsNothing`. It counts all visible people in one consistent read; it does not return a sampled page. `unknown > 0` means the count is incomplete, never that those people do not match. It changes no memberships and sends no emails.
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
frontpage people groups count --file repeat-buyers.json --site YOUR_SITE --json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Both `groups.create` and `groups.update` accept `requestKey` (1–120 characters). Retry an uncertain save with exactly the same key and payload to receive the original saved group without another write. Changing the payload with that key returns a conflict. Keep `expectedGroup` unchanged on a retry; a confirmed new edit uses a new key.
|
|
101
|
+
|
|
102
|
+
A conditional group must have at least one complete condition. In the workspace, Save group and Save group & add email use the same validation. An incomplete group stays on its page with a field error. A valid save-and-email action saves the group before opening the email editor or picker. Saving the new email attaches its paused rule and returns to the saved group. Canceling a new email leaves the saved group without that attachment. Membership never grants email permission.
|
|
103
|
+
|
|
94
104
|
When changing to **Match conditions**, membership will update to match the conditions, and some people may join or leave. When changing to **Add people**, current members stay and the group stops updating from conditions. Existing exceptions, saved pauses, stages and history stay saved. The UI shows this effect before Save and does not add a confirmation step.
|
|
95
105
|
|
|
96
106
|
### Keep a group matched to conditions
|
|
@@ -628,10 +638,11 @@ The agent can create and edit saved templates and series with the existing Email
|
|
|
628
638
|
| sources | — | Supported events and current form/product IDs. |
|
|
629
639
|
| groups.list | archived? | List groups; archived:true includes archived groups. |
|
|
630
640
|
| groups.get | id | One group with its stages. |
|
|
631
|
-
| groups.create | label, color?, mode?, conditions?
|
|
632
|
-
| groups.update | id, changed fields, expectedGroup?
|
|
641
|
+
| groups.create | label, color?, mode?, conditions?, requestKey? | Create a group. |
|
|
642
|
+
| groups.update | id, changed fields, expectedGroup?, requestKey? | Edit a group; compare its saved emailVersion to reject a stale form before writes. |
|
|
633
643
|
| groups.archive / groups.restore | id | Archive or restore a group. Related rules remain paused on restore. |
|
|
634
644
|
| groups.preview | id or conditions; personId? or cursor? | Check conditions without changing membership. |
|
|
645
|
+
| groups.count | id or conditions | Count all visible people matching conditions; report unknown facts separately. |
|
|
635
646
|
| groups.people | groupId; q?, source?, sort?, page?, selectedOnly?, selected?, availability? | Read the manual-group picker, including phone-only contacts and current membership. |
|
|
636
647
|
| stages.create | groupId, label, color?, position?, terminal? | Create a stage in a saved group. |
|
|
637
648
|
| stages.update | id, groupId, changed fields | Edit a stage. |
|
|
@@ -698,7 +709,7 @@ People supplies first-name and unsubscribe values. If content uses order, bookin
|
|
|
698
709
|
|
|
699
710
|
Group details has an Email section. It shows ordinary rules whose actual trigger is someone joining that group and whose actions send a template or start a series. It uses the same records as Rules. Saved conditions and extra actions stay visible. Moving a rule's placement does not change where it runs.
|
|
700
711
|
|
|
701
|
-
Use the shared Add email control to select a saved template, create a template, or use a saved series. Stage Manage rules uses the same template task. Save the group
|
|
712
|
+
Use the shared Add email control to select a saved template, create a template, or use a saved series. Stage Manage rules uses the same template task. With unsaved group edits, the workspace labels the action **Save group & add email**. Choosing an action validates and saves the group before opening the picker or editor. Missing conditions stay on the group page with an error. A failed group save retains the inputs and does not navigate. Canceling email setup leaves the group saved without a new attachment. Creating or attaching saves one **paused** rule with no extra conditions. A notice beside attached paused emails says to click Activate. Nothing activates, enrolls or sends until the owner explicitly activates the rule for future events. The older `attachments.create` operation keeps its documented defaults; the new completion below always creates paused rules.
|
|
702
713
|
|
|
703
714
|
The existing command and agent operation handle the complete save:
|
|
704
715
|
|
|
@@ -730,7 +741,7 @@ The response returns `complete:true`, `document` and `rule`. Repeating the same
|
|
|
730
741
|
|
|
731
742
|
To attach an existing source, omit `document`. Add either `attachment.templateId` or `attachment.seriesId` and its `expectedSourceUpdatedAt` from a fresh template/series get. A series needs at least one saved step. The result includes the source and paused rule. To edit shared content from an existing entry rule, supply the existing document with `expectedUpdatedAt`, plus `attachment.ruleId` and `expectedRevision` from `rules.get`. This saves the content while leaving the rule's conditions, actions, version, enabled state, activation time and history unchanged. Stale group, stage, source or rule checks return a conflict; keep the draft and review the saved records before making a revised request.
|
|
732
743
|
|
|
733
|
-
The workspace uses the existing template editor and returns to the source group or Stages after Save &
|
|
744
|
+
The workspace uses the existing template editor and returns to the source group or Stages after Save email & attach to group. Unfinished group, rule, stage, picker and template edits stay in memory only. Leaving uses the shared unsaved-changes modal: Cancel keeps editing; Discard and continue loses those edits and leaves without a network request. Refresh or closing the tab discards unfinished work without a browser prompt. Clean navigation and opening saved records show no warning. There is no editor backup or Recover save action. A template task keeps its source context in memory during the active flow; a refreshed task must be reopened from its source. A self-test sends only test content and does not complete a pending group task. Retry a submitted save with the exact original key and payload after a lost response; this does not require an editor backup.
|
|
734
745
|
|
|
735
746
|
Templates remain shared. Changes affect future uses; already queued messages keep their content snapshots. Template get exposes `ruleUsage`; the UI also shows rule usage beside existing dependencies. Deleting a template used by a live rule, including a paused rule, fails with a conflict naming the rule. Remove the template action or archive the rule first. Series, form and receipt dependencies still apply. Archiving a rule keeps its run history and saved actions. Never activate, enroll or send without the user's instruction.
|
|
736
747
|
|
package/README.md
CHANGED
|
@@ -95,4 +95,4 @@ A whole stock count of `0` means sold out; `unlimited` sends JSON null. Omit sto
|
|
|
95
95
|
|
|
96
96
|
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
97
97
|
|
|
98
|
-
Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
|
98
|
+
The workspace validates and saves unfinished group settings before opening email setup. CLI and agent callers use `groups.create` / `groups.update` with a stable `requestKey` before attaching; `groups.count` reads the full visible match count. Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
package/dist/registry.js
CHANGED
|
@@ -473,6 +473,7 @@ export const COMMANDS = [
|
|
|
473
473
|
examples: [
|
|
474
474
|
"frontpage people overview --json",
|
|
475
475
|
"frontpage people groups create --label Leads",
|
|
476
|
+
"frontpage people groups count --file conditions.json --json",
|
|
476
477
|
"frontpage people stages create --group GROUP_ID --label New --position 0",
|
|
477
478
|
"frontpage people membership add --person PERSON_ID --group GROUP_ID",
|
|
478
479
|
"frontpage people rules create --file rule.json",
|
|
@@ -487,13 +488,13 @@ export const COMMANDS = [
|
|
|
487
488
|
"frontpage people export",
|
|
488
489
|
],
|
|
489
490
|
flags: [
|
|
490
|
-
"Workspace: groups list|get|create|update|archive|restore|preview; stages create|update|reorder|archive|restore; membership get|add|remove|move|stage|advance|override|hold; rules list|get|create|update|enable|pause|archive|validate|preview|runs|retry; attachments create; import preview|start|get|retry; person permission; audience preview; overview; sources",
|
|
491
|
+
"Workspace: groups list|get|people|create|update|archive|restore|preview|count; stages create|update|reorder|archive|restore; membership get|add|addMany|remove|move|stage|advance|override|hold; rules list|get|create|update|place|enable|pause|archive|validate|preview|runs|retry; attachments create; import preview|start|get|retry; person permission|lookup|activity|update; audience preview; overview; sources. Use workspace notes.add|template.campaign|series.preview|series.enrol for the remaining shared operations.",
|
|
492
|
+
"groups count checks all visible people without changing membership. groups create/update accept --request-key for exact retries and expectedGroup through JSON for stale-save checks. Keep the original key and payload after an uncertain save.",
|
|
491
493
|
"All workspace operations accept --file JSON or --data JSON. Named flags: --id --label --name --group --stage --person --from-group --mode --color --position --terminal --enabled --hold --allowed --archived --reset --override include|exclude|auto --email-kind template|series --email-id --rule --run --cursor --limit --request-key. Boolean flags take true|false. Complex conditions/actions/mappings use JSON.",
|
|
492
494
|
"CSV: --csv PATH plus --file mapping.json. New contacts default to allowed; JSON emailPermission can select unknown or not_allowed. Row values override the list choice; saved refusals, unsubscribes and suppressions remain protected. import start requires a stable --request-key. Retry the same import with the same key and contents.",
|
|
493
495
|
"list/export: --group GROUP_ID --stage STAGE_ID. See package PEOPLE.md for full examples and every JSON shape.",
|
|
494
496
|
"list: --q --group --stage --source --form-slug --follow-up due|upcoming|none --hidden --sort --last-seen-days --limit --cursor",
|
|
495
497
|
"add requires --email and/or --phone (never name alone). New contacts default to owner-asserted email permission; --email-permission allowed|unknown|not_allowed changes this choice. Existing default decisions stay saved; withdrawals/restrictions cannot be overridden by add.",
|
|
496
|
-
"tag: --add <label> | --remove <slug>",
|
|
497
498
|
"export writes UTF-8 CSV (same filters as list). Optional --out <file>",
|
|
498
499
|
"Hide is not forget. Unique email/phone stay; later ingest un-hides",
|
|
499
500
|
"Unknown leftover flags fail closed (exit 2)",
|
package/llms.txt
CHANGED
|
@@ -54,4 +54,4 @@ Customer Inbox: Frontpage website chat uses one settings toggle, no website edit
|
|
|
54
54
|
|
|
55
55
|
See [MAIL.md](./MAIL.md) for the complete save contract, reusable people picker directory, saved campaign recipients, Off-series enrollment and resume timing, all sender settings/null resets, suppression rules, Sent queries and details, and retry-safe examples. `frontpage mail save --file save.json` saves template and pending series together; it never sends. `frontpage mail people` reads the same site-scoped directory as the workspace. Use `frontpage help mail --json` for current commands and flags. No new CLI binary, API namespace or migration command is required. Hosted guides and article help must be updated through the Frontpage CLI.
|
|
56
56
|
|
|
57
|
-
Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|
|
57
|
+
The workspace validates and saves unfinished group settings before opening email setup. CLI and agent callers use `groups.create` / `groups.update` with a stable `requestKey` before attaching; `groups.count` reads the full visible match count. Group details Email and stage email tasks use the existing `frontpage mail save` / `save_mail_editor` completion. `attachment` checks saved group/stage emailVersion, creates paused rules, supports shared-template edits with rule revisions, and recovers identical retries. Read MAIL.md, Group and stage email tasks. Template get includes ruleUsage; deletion protects paused and active rule dependencies. Creating or saving never activates, enrolls or sends.
|