Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deploy-cloudflare-workers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup pnpm
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
uses: pnpm/action-setup@73e46992e05b19abd31f2f3c20e0e7370d762115 # v6.1.1
with:
version: 10.34.5

Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup pnpm
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
uses: pnpm/action-setup@73e46992e05b19abd31f2f3c20e0e7370d762115 # v6.1.1
with:
version: 10.34.5

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup pnpm
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
uses: pnpm/action-setup@73e46992e05b19abd31f2f3c20e0e7370d762115 # v6.1.1
with:
version: 10.34.5

Expand Down
4 changes: 4 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 2026-11-10 — Clarify managed payment recovery

- Offer a check of the existing payment after returning from Paystack, and show supported provider observations and reservation expiry separately without inferring payment from the hold. Preserve verified fulfillment and refund precedence and support older EMS responses.

## 2026-11-07 — Add online events to calendars

- Add individual online events to Google Calendar or download an .ics file for Apple Calendar, Outlook and other apps, including the public meeting link. Preserve registration and live viewing actions.
Expand Down
4 changes: 3 additions & 1 deletion docs/devcon26-attendance-counter.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# DevCon26 attendance counter

The website reads the public 2026 attendance counter from EMS at runtime. An EMS Owner publishes the estimate or actual count from Registration. The website does not calculate or publish a count; it hides the readout when the endpoint returns an unpublished value, an invalid response, or an error.
The website reads the public 2026 attendance counter from EMS at runtime. EMS calculates the counter from a starting count and net fulfilled live ticket purchases. The website does not calculate or publish a count; it hides the readout when the endpoint returns an unpublished value, an invalid response, or an error.

`PUBLIC_DEVCON26_API_ORIGIN` selects the API origin at build time and defaults to `https://em.devcongress.org`. The production website reads that origin directly. For the website-owned Workers preview URLs using the default API origin, the Worker relays the fixed public counter endpoint because EMS only permits the production website origin. The relay forwards no visitor headers, query parameters, or credentials, and does not cache the response. A custom configured origin is called directly and needs its own CORS and CSP configuration.

Deploy the reader and relay before activating the EMS `ticket_count` source. The reader also accepts the legacy sources during rollout. It refreshes on return to the page, after a verified live purchase in the same page or another same-origin tab, and periodically while visible; bounded retries accommodate delayed confirmation. Cross-origin tabs are picked up by visibility or periodic refresh. Fetch failures hide the counter.
2 changes: 2 additions & 0 deletions docs/devcon26-flexible-checkout.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ The payment badge editor opens the photo adjuster after a new image is selected

## Failure recovery

Returning from managed Paystack checkout offers a link to check the existing reference with its saved browser grant. It never starts a replacement payment automatically. Managed confirmation can show an optional, allowlisted provider observation and a separate expired reservation notice; these are historical context, not proof of fulfillment or that a new charge is safe. Verified fulfillment and order-level refund states take precedence, and older EMS responses without this metadata retain a safe fallback.

An order that cannot accept payment retains its request identity; the buyer is directed to check email or contact the organizer before starting again. The payment confirmation page hides Retry if its browser grant is absent and directs the buyer to their private ticket email. This does not infer that payment failed or authorize a new charge. The admission backend separately reconciles stored payment references.

The missing-access state uses a centered, narrow layout on the existing cream background, with a fixed-size ticket-and-envelope illustration beside the heading on desktop and mobile. It displays the buyer-formatted reference as a support identifier and includes it in the contact-email subject; it is not proof of payment. Other confirmation states hide and clear these recovery details.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
},
"dependencies": {
"@inttegro/js": "0.7.2",
"astro": "^7.4.4",
"astro": "^7.4.7",
"zod": "^4.6.7"
},
"devDependencies": {
"@cloudflare/workers-types": "5.20261030.1",
"wrangler": "^4.156.0"
"@cloudflare/workers-types": "5.20261106.1",
"wrangler": "^4.158.0"
},
"pnpm": {
"overrides": {
Expand Down
Loading
Loading