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
|
||||
fi
|
||||
|
||||
# "textarea" and "file" are the two values content.rs special-cases;
|
||||
# anything else is passed straight through as an HTML <input type>
|
||||
# attribute, so this is the real set of valid values, not a guess.
|
||||
# "textarea", "file", and "prosekit" are the three values
|
||||
# content.rs/app.rs special-case; anything else is passed straight
|
||||
# through as an HTML <input type> attribute, so this is the real set
|
||||
# of valid values, not a guess.
|
||||
bad_types=$(jq -r '
|
||||
[.alternatives[]?.features[]?.requirements[]?
|
||||
| select(.type != null and (.type | IN(
|
||||
"text", "textarea", "file", "email", "tel", "url", "number",
|
||||
"password", "date", "datetime-local", "time", "month", "week",
|
||||
"color", "range", "checkbox", "radio", "hidden", "search"
|
||||
"text", "textarea", "file", "prosekit", "email", "tel", "url",
|
||||
"number", "password", "date", "datetime-local", "time", "month",
|
||||
"week", "color", "range", "checkbox", "radio", "hidden", "search"
|
||||
) | not))
|
||||
| .type]
|
||||
| unique | .[]
|
||||
|
||||
@@ -9,6 +9,7 @@ alternatives:
|
||||
reads the whole brief before answering.
|
||||
action: /project
|
||||
consequence: [Tell us what you're after]
|
||||
record_as: portal_project_inquiries
|
||||
encouragements:
|
||||
- We read every word before breaking ground.
|
||||
features:
|
||||
@@ -31,6 +32,7 @@ alternatives:
|
||||
there's something worth saying.
|
||||
action: /subscribed
|
||||
consequence: [Subscribe]
|
||||
record_as: portal_subscribers
|
||||
encouragements:
|
||||
- Consider yourself posted.
|
||||
features:
|
||||
|
||||
+38
-2
@@ -1,9 +1,9 @@
|
||||
id: /review
|
||||
route: ^/review
|
||||
name: Who's applied?
|
||||
name: The review desk
|
||||
qualifies: owners
|
||||
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:
|
||||
- name: Applicants
|
||||
description: ""
|
||||
@@ -18,3 +18,39 @@ alternatives:
|
||||
label: Invite
|
||||
- to: declined
|
||||
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