Add portal_project_inquiries/portal_subscribers durable storage, review dashboard alternatives, newsletter compose
Lint and reload / lint-and-reload (push) Successful in 3s
Lint and reload / lint-and-reload (push) Successful in 3s
- index.yaml: record_as on "I want something built" and "Keep me posted" - those submissions previously only existed as a NATS event, nothing durable, despite promising a reply/subscription. - review.yaml: consolidated into one dashboard question with four alternatives (Applicants, Inquiries, Subscribers, Compose newsletter) rather than separate pages per resource. - Compose newsletter has no record_as/resource of its own - an automation (n8n) filters portal.answers.submitted directly for question_id == "/review" && alternative == "Compose newsletter", matching events.rs's own "gain a second subscriber" design. - lint.sh: allow type: prosekit (the new rich-text requirement kind).
This commit is contained in:
@@ -39,15 +39,16 @@ for f in "$dir"/*.yaml; do
|
|||||||
fail=1
|
fail=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# "textarea" and "file" are the two values content.rs special-cases;
|
# "textarea", "file", and "prosekit" are the three values
|
||||||
# anything else is passed straight through as an HTML <input type>
|
# content.rs/app.rs special-case; anything else is passed straight
|
||||||
# attribute, so this is the real set of valid values, not a guess.
|
# through as an HTML <input type> attribute, so this is the real set
|
||||||
|
# of valid values, not a guess.
|
||||||
bad_types=$(jq -r '
|
bad_types=$(jq -r '
|
||||||
[.alternatives[]?.features[]?.requirements[]?
|
[.alternatives[]?.features[]?.requirements[]?
|
||||||
| select(.type != null and (.type | IN(
|
| select(.type != null and (.type | IN(
|
||||||
"text", "textarea", "file", "email", "tel", "url", "number",
|
"text", "textarea", "file", "prosekit", "email", "tel", "url",
|
||||||
"password", "date", "datetime-local", "time", "month", "week",
|
"number", "password", "date", "datetime-local", "time", "month",
|
||||||
"color", "range", "checkbox", "radio", "hidden", "search"
|
"week", "color", "range", "checkbox", "radio", "hidden", "search"
|
||||||
) | not))
|
) | not))
|
||||||
| .type]
|
| .type]
|
||||||
| unique | .[]
|
| unique | .[]
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ alternatives:
|
|||||||
reads the whole brief before answering.
|
reads the whole brief before answering.
|
||||||
action: /project
|
action: /project
|
||||||
consequence: [Tell us what you're after]
|
consequence: [Tell us what you're after]
|
||||||
|
record_as: portal_project_inquiries
|
||||||
encouragements:
|
encouragements:
|
||||||
- We read every word before breaking ground.
|
- We read every word before breaking ground.
|
||||||
features:
|
features:
|
||||||
@@ -31,6 +32,7 @@ alternatives:
|
|||||||
there's something worth saying.
|
there's something worth saying.
|
||||||
action: /subscribed
|
action: /subscribed
|
||||||
consequence: [Subscribe]
|
consequence: [Subscribe]
|
||||||
|
record_as: portal_subscribers
|
||||||
encouragements:
|
encouragements:
|
||||||
- Consider yourself posted.
|
- Consider yourself posted.
|
||||||
features:
|
features:
|
||||||
|
|||||||
+38
-2
@@ -1,9 +1,9 @@
|
|||||||
id: /review
|
id: /review
|
||||||
route: ^/review
|
route: ^/review
|
||||||
name: Who's applied?
|
name: The review desk
|
||||||
qualifies: owners
|
qualifies: owners
|
||||||
description: >
|
description: >
|
||||||
Sign in as an organizational owner to see who's applied.
|
Sign in as an organizational owner to see what's come in.
|
||||||
alternatives:
|
alternatives:
|
||||||
- name: Applicants
|
- name: Applicants
|
||||||
description: ""
|
description: ""
|
||||||
@@ -18,3 +18,39 @@ alternatives:
|
|||||||
label: Invite
|
label: Invite
|
||||||
- to: declined
|
- to: declined
|
||||||
label: Decline
|
label: Decline
|
||||||
|
|
||||||
|
- name: Inquiries
|
||||||
|
description: ""
|
||||||
|
features:
|
||||||
|
- name: ""
|
||||||
|
description: ""
|
||||||
|
resource:
|
||||||
|
bucket: portal_project_inquiries
|
||||||
|
requires_group: owners
|
||||||
|
transitions:
|
||||||
|
- to: handled
|
||||||
|
label: Mark handled
|
||||||
|
|
||||||
|
- name: Subscribers
|
||||||
|
description: ""
|
||||||
|
features:
|
||||||
|
- name: ""
|
||||||
|
description: ""
|
||||||
|
resource:
|
||||||
|
bucket: portal_subscribers
|
||||||
|
requires_group: owners
|
||||||
|
|
||||||
|
- name: Compose newsletter
|
||||||
|
description: >
|
||||||
|
Sends to everyone in Subscribers - picked up by an automation
|
||||||
|
watching this question, not portal itself.
|
||||||
|
consequence: [Send]
|
||||||
|
features:
|
||||||
|
- name: ""
|
||||||
|
description: ""
|
||||||
|
requirements:
|
||||||
|
- name: subject
|
||||||
|
label: Subject
|
||||||
|
- name: body
|
||||||
|
label: Body
|
||||||
|
type: prosekit
|
||||||
|
|||||||
Reference in New Issue
Block a user