Skip to content

Bring the sponsor portal up to date with the fork - #19

Merged
JakeGinnivan merged 1 commit into
mainfrom
jakeginnivan/bring-the-sponsor-portal-up-to-date-with-the-fork
Sep 8, 2026
Merged

JakeGinnivan merged 1 commit into
mainfrom
jakeginnivan/bring-the-sponsor-portal-up-to-date-with-the-fork

Conversation

@JakeGinnivan

Copy link
Copy Markdown
Contributor

Upstreams five fork PRs' worth of sponsor portal work that was built in dddwa/dddperth and never pushed back.

Why this is one large PR

Core's portal was still at "add sponsor portal" plus the additional-emails change. Everything since had accumulated only in the fork, which surfaced when Vicki's testing feedback (dddperth#157) modified files core had never received — that PR couldn't be upstreamed alone, because its changes sit on top of four earlier ones.

The work happened in the fork because that's the only place with real Jira credentials and real sponsors to test against — the intended build-in-fork, upstream-after cycle. This is the "upstream after" that was owed.

What lands

  • Exhibition logistics — sponsors/logistics.ts, portal.logistics.tsx, migration 0019. Sponsors supply their own bump-in/out slots, equipment, parking and raffle details.
  • Exhibitor spreadsheet export — sponsors/exhibitor-export.ts + admin route, producing the venue's supplier list.
  • Per-workstream Jira status flips — statusFlips in the manifest, with progress.ts deriving what a sponsor still owes. Replaces the old multi-checkbox sponsorTasks field: Jira can't filter by multi-checkbox, so the committee needs one JQL-filterable single-select per workstream.
  • Portal dashboard + shared components — portal-form.tsx, portal-saved-banner.tsx, sponsor-progress-list.tsx, and the Jira client rework that reads editmeta to adapt to committee field-type changes rather than hardcoding shapes.

Layer split

Fork-owned config (conference/config/sponsor-portal.ts, carrying DDD Perth's customfield_* ids) deliberately stays in the fork — the manifest types added here are what make that separation work. Fork-shape files (project.json, tsconfigs, e2e/routes.ts, date-states.spec.ts) and the fork's visual baselines are excluded as usual; verified against a git subtree split of the fork, where every remaining difference is one of those.

One fix on the way through

sponsor-portal-config.test.ts read portal.jira at suite scope under describe.runIf(portal). runIf skips the tests, but the suite body still executes during collection — so it threw for any conference without a sponsor portal, conference-stub included. Now resolved per test. Verified both ways: asserts in the fork against its real config (6 passing), skips cleanly here (6 skipped).

Verification

  • 430 unit tests pass, 6 skipped (the portal-config suite — correct, the stub configures no portal).
  • Typecheck, lint and build clean.
  • Visual suite passes with zero baseline changes — the expected result for auth-gated portal routes that render nothing public.

Caveat for review

The Jira integration can't be exercised end-to-end here: conference-stub configures no portal, so coverage is unit tests plus stub-jira-client.server.ts. The live paths were exercised against the real SPN board from the fork.

After this lands

Forks should /core-pull. DDD Perth's own copy is identical content, so it should merge cleanly.

https://claude.ai/code/session_019eNk5wET3eWEqRFFtLihTV

Upstreams five fork PRs' worth of sponsor portal work that was built in
dddwa/dddperth and never pushed back. Core's portal was still at "add sponsor
portal" plus the additional-emails change; everything since had accumulated
only in the fork, which surfaced when Vicki's testing feedback
(dddwa/dddperth#157) modified files core had never received.

The work happened in the fork because that is the only place with real Jira
credentials and real sponsors to test against — the intended build-in-fork,
upstream-after cycle. This is the "upstream after" that was owed.

What lands:

  - Exhibition logistics: `sponsors/logistics.ts`, `portal.logistics.tsx` and
    migration 0019, letting sponsors supply bump-in/out, equipment, parking
    and raffle details themselves.
  - Exhibitor spreadsheet export: `sponsors/exhibitor-export.ts` plus its
    admin route, so the committee can produce the venue's supplier list.
  - Per-workstream Jira status flips: `statusFlips` in the manifest, with
    `progress.ts` deriving what the sponsor still owes. Replaces the old
    multi-checkbox `sponsorTasks` field, which Jira can't filter by — the
    committee needs one JQL-filterable single-select per workstream.
  - Portal dashboard, shared form components (`portal-form.tsx`,
    `portal-saved-banner.tsx`, `sponsor-progress-list.tsx`) and the Jira
    client rework that reads `editmeta` to adapt to committee field-type
    changes rather than hardcoding shapes.

Fork-owned config (`conference/config/sponsor-portal.ts`, carrying DDD Perth's
customfield ids) deliberately stays in the fork; the manifest types are what
make that possible. Fork-shape files (project.json, tsconfigs, e2e/routes.ts,
date-states.spec.ts) and the fork's baselines are excluded as usual.

One fix on the way through: `sponsor-portal-config.test.ts` read
`portal.jira` at suite scope under `describe.runIf(portal)`. `runIf` skips the
tests but the suite body still runs during collection, so it threw for any
conference without a sponsor portal — conference-stub included. Now resolved
per test, so it asserts in the fork and skips cleanly here. Verified both ways.

Verified: 430 unit tests pass (6 skipped — the portal-config suite, correctly,
since the stub configures no portal), typecheck, lint and build clean, and the
visual suite passes with **zero baseline changes**, which is the expected
result for auth-gated portal routes that render nothing public.

Claude-Session: https://claude.ai/code/session_019eNk5wET3eWEqRFFtLihTV
@JakeGinnivan
JakeGinnivan merged commit 15024ab into main Sep 8, 2026
3 checks passed
@JakeGinnivan
JakeGinnivan deleted the jakeginnivan/bring-the-sponsor-portal-up-to-date-with-the-fork branch September 8, 2026 04:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant