Skip to content

Upstream 1/5: sponsor portal and Jira sync (dddperth #158–#172) - #22

Merged
JakeGinnivan merged 11 commits into
mainfrom
jakeginnivan/upstream-1-sponsor-portal-jira-sync
Oct 19, 2026
Merged

JakeGinnivan merged 11 commits into
mainfrom
jakeginnivan/upstream-1-sponsor-portal-jira-sync

Conversation

@JakeGinnivan

Copy link
Copy Markdown
Contributor

Summary

1/5 of the upstream catch-up. Sponsor portal and Jira sync, fork PRs #158, #161–#164, #167–#170 and #172.

sponsor portal
├── Jira is the canonical record (sync, field prefill, committee data protection)
├── exhibitor room, follow-up list with mailto drafts
├── community and in-kind sponsor tiers
app
├── retire the mobile app without breaking installed copies
└── public run sheet safe to expose anonymously
migrations 0020–0024

One commit is new here rather than replayed (eb94625). The Jira mapping tests only made sense with DDD Perth's portal config, so they now skip when no sponsor portal is configured (describe.runIf(conferenceManifest.sponsorPortal)), which is how core already handles this. The merged sponsor-portal-config.test.ts assertions now use core's lazy jira() / statusFlips() accessors.

Evidence

  • Before: in the stub, the replayed Jira mapping tests fail because the stub has no sponsor portal config, and typecheck fails on the 3-way merge of the config test.
    After: build, typecheck, lint (0 errors), unit tests, e2e (55 passed) and pnpm vr (81 passed) all pass. Visual baselines are unchanged.

Merge Danger

Door: one-way

Adds D1 migrations 0020–0024. Once a fork applies them, rolling back means writing down-migrations.

Blast Radius: sponsor-portal

Mostly behind the sponsor portal config, which the stub doesn't set. The mobile-app retirement and the public run sheet change touch every fork.


Part of a 5-PR stack that brings ddd-core up to date with every core/ change merged in dddwa/dddperth since #157. Each fork PR is replayed as one commit, credited to its author, with its fork PR number in the message. Merge the stack in order, starting at 1/5.

JakeGinnivan and others added 11 commits October 15, 2026 08:01
Upstreamed from dddwa/dddperth#158 (fork merge 272174d).
Visual baselines are left fork-local.

- fix(sponsor-portal): harden Jira sync and exports
Upstreamed from dddwa/dddperth#161 (fork merge 3d4e0e1).
Visual baselines are left fork-local.

- add runsheets page
- add api call to atlassian to get issues
- add params
- add runsheets page
- add api call to atlassian to get issues
- add params
- fix safe-routes
- style buttons, get filter working
- add filter select
- fix table overflow, add icon for  role instructions
- remove old filter button
- add comments
- add location and team enums, update filter and rows to use enums for nice labels, refactor filter code in loader
- add JiraAuth to get api creds from env
- clean up
- fix: make the runsheets route typecheck, lint and run on workerd
- fix(runsheets): make the public run sheet safe to expose anonymously
- refactor(runsheets): move Jira wiring out of core into fork config
- fix(runsheets): use the existing Jira credentials, not a second copy

Co-authored-by: Jet760 <jessicarturner00@gmail.com>
Upstreamed from dddwa/dddperth#162 (fork merge 6950d88).
Visual baselines are left fork-local.

- feat(sponsor-portal): prefill profile fields from Jira
- docs(sponsor-portal): document the Jira prefill and Asset Upload URL
… exhibitor room

Upstreamed from dddwa/dddperth#163 (fork merge e863bbb).
Visual baselines are left fork-local.

- fix(sponsor-portal): stop portal saves erasing committee logistics
- docs(sponsor-portal): record the submitted-key rule and logistics prefill
- fix(sponsor-portal): make Jira sync authoritative
- refactor(sponsor-portal): clarify the Jira write-back control flow
- feat(sponsor-portal): show the committee-assigned exhibitor room
- test(sponsor-portal): add a collaboration harness over real SQL and a fake Jira
- fix(sponsor-portal): stop every save clearing both checkbox groups
… support link

Upstreamed from dddwa/dddperth#164 (fork merge 21e2376).
Visual baselines are left fork-local.

- fix(sponsor-portal): count committee Jira answers in progress and status flips
- feat(sponsor-portal): offer the sponsorship inbox on every portal page
Upstreamed from dddwa/dddperth#168 (fork merge adafe7f).
Visual baselines are left fork-local.

- feat(app): retire the mobile app without breaking installed copies
- fix(app): say the app is unsupported, not out of date
- fix(app): state that no updates were made, rather than withdrawing support
- refactor(app): move the retirement copy into conference config
- fix(test): drop redundant awaits on the sync app-config loader
- revert(app): drop the notice field, use existing app announcements
…sponsor saves

Upstreamed from dddwa/dddperth#167 (fork merge c5f599c).
Visual baselines are left fork-local.

- fix(agenda): stop a null speaker tagLine 500ing every 2022 talk page
- feat(sponsor-portal): make rejected sponsor saves visible in the logs
Upstreamed from dddwa/dddperth#169 (fork merge 62967a9).
Visual baselines are left fork-local.

- fix(a11y): stop content pages rendering a second <main>
Upstreamed from dddwa/dddperth#170 (fork merge ac2731e).
Visual baselines are left fork-local.

- feat(sponsors): add in-kind tier and share one tier list with the tooling
Upstreamed from dddwa/dddperth#172 (fork merge bc879f6).
Visual baselines are left fork-local.

- feat(admin): sponsor follow-up list with per-sponsor mailto drafts
- chore: regenerate safe-routes types for the follow-up route
- feat(admin): link each sponsor's upload folder from the follow-up list
- feat(admin): explicit "Open in Jira" link on the follow-up list
…igured

The Jira client and sync tests added with the fork's sponsor portal work read
the conference's real Jira field mappings from the manifest. conference-stub
configures no sponsor portal, so here they threw instead of skipping.

Gate those suites on `conferenceManifest.sponsorPortal`, as
sponsor-portal-config.test.ts already does: they assert in a fork with a
portal and skip cleanly in the stub. Tests that build their own config still
run everywhere.

Also adapts the two assertions the fork added to sponsor-portal-config.test.ts
to core's lazy `jira()` / `statusFlips()` accessors. The fork fixed the same
collection-time crash differently (an early return), so its new lines read
the values directly and failed typecheck once merged into core's version.
@JakeGinnivan
JakeGinnivan added this pull request to stack #28 October 19, 2026 00:41
@JakeGinnivan
JakeGinnivan merged commit d38d185 into main Oct 19, 2026
3 checks passed
@JakeGinnivan
JakeGinnivan deleted the jakeginnivan/upstream-1-sponsor-portal-jira-sync branch October 19, 2026 01:33
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