Commit Graph
57 Commits
Author SHA1 Message Date
Bendik Aagaard Lynghaug 731f307ce1 Add self-service Unsubscribe alternative to /subscribed
Lint and reload / lint-and-reload (push) Successful in 3s
Only shows when reached via a ?chain=&email= link (see portal's
self_transition), matching the link the newsletter workflow now
appends to every send.
2026-08-05 18:48:25 +02:00
Bendik Aagaard Lynghaug 9910ce0ec4 Fold newsletter compose into Subscribers as a second feature, not its own alternative
Lint and reload / lint-and-reload (push) Successful in 2s
Per feedback: sending a newsletter is naturally part of "Subscribers",
not a separate review task. Also fixes a real bug - the standalone
Compose newsletter alternative had no `action`, so AlternativeCard
never rendered a submit button/form for it at all (has_action gates
the <form>, unconditionally). action: /review reloads the dashboard
after sending.
2026-08-05 14:23:38 +02:00
Bendik Aagaard Lynghaug 6ed0b65bc2 Add portal_project_inquiries/portal_subscribers durable storage, review dashboard alternatives, newsletter compose
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).
2026-08-05 13:46:17 +02:00
Bendik Aagaard Lynghaug 1f0d930768 Invoke lint.sh via bash - checkout didn't preserve the exec bit
Lint and reload / lint-and-reload (push) Successful in 3s
2026-08-05 07:20:18 +02:00
Bendik Aagaard Lynghaug fc4cd1b86e Add lint + reload-trigger workflow
Lint and reload / lint-and-reload (push) Failing after 2s
Validates YAML/required fields/duplicate ids/requirement types with
yq+jq against the exact shape content.rs parses (not a full schema
check - that would mean building portal just to lint content), then
publishes portal.content.reload over NATS so every running portal
instance picks up the change without a restart (portal's own
content::watch_for_reload, added alongside this).
2026-08-05 07:19:07 +02:00
Bendik Aagaard Lynghaug d8628dbd15 Rework copy voice, add /review, Kanidm-gated applicant review
English URLs throughout; review.yaml adds a qualifies-gated question
listing applicants via the generic NATS-KV resource mechanism, with
Invite/Decline transitions. Content pass: concrete/positive phrasing
(no negation constructions), warmer inclusive tone, light puns in the
encouragement lines.
2026-07-29 19:39:00 +02:00
Bendik Aagaard Lynghaug 5321f70540 Initial content: opener, project, subscribed, applied 2026-07-29 12:51:55 +02:00