Repository navigation
chore(core): pull ddd-core through #30 and link core's skills - #217
Merged
Merged
Conversation
8a6c80a Merge pull request #30 from dddwa/jakeginnivan/upstream-fork-prs-204-215 1e1dcac docs(skills): forks link core's skills instead of copying them dd3b73e docs(skills): tell forks how to take the Temporal move and core's root-config changes 6cf477e test(visual): regenerate baselines for the blog fixtures, content grid and header 8ba20c2 fix(a11y): let keyboard users scroll MDX code blocks 2105946 test(e2e): run the Temporal browser check against the fixture conference ef415a3 docs: record the blog fixtures and header sweep in the visual suite notes 26b4815 test(dates): don't assume the conference is in Perth e659fe3 feat(blog): migrate every Medium post onto the site and retire blog.dddperth.com 47f371f feat(agenda): close agenda building once the conference is over 62a364b Introduce standard Temporal dates with a native-first fallback a5e0b8c fix(admin): move sponsor tools out of the Jira sync card 98b32f7 refactor(styles): replace bracket escapes with design tokens 44682fe Default dates to conference timezone and enforce safe date patterns 5e7c52e feat(portals): move the sponsor portal to /sponsor-portal and give both portals a proper header f60ec60 feat(sponsors): collect sponsor feedback through the portal ad6ba02 Merge pull request #29 from dddwa/jakeginnivan/upstream-fork-pr-208-review-fixes ae2d81b Merge pull request #27 from dddwa/jakeginnivan/fix-theme-token-references d66c6c0 fix: address five defects found reviewing the upstream feature stack 9ef5430 fix(theme): make theme token references resolve 5ecc615 Merge pull request #26 from dddwa/jakeginnivan/upstream-fork-prs-158-202 ebe65ca test(visual): regenerate talk-detail baselines for the talk dialog 5c2b668 test(e2e): run conference-day tests against a fixture conference year 085ed43 feat(feedback): ask about Meet the Experts on the conference form 7b0fe87 feat(feedback): only take feedback on talks once they've finished cfed0c1 feat(admin): grouped sidebar nav with a mobile menu drawer 5f52ff8 feat(agenda): embed talk recordings in the talk dialog 0339862 feat(agenda): open talks in a dialog with speaker bios a682741 feat(feedback): conference and talk feedback form, admin view and Excel export c8b0951 Merge pull request #25 from dddwa/jakeginnivan/upstream-4-runsheets 5a84a25 feat(runsheets): add a Show Breaks toggle 1ed02de feat(runsheets): bump-in run sheet matches the conference-day one a4697e6 fix(runsheets): offline service worker works on a first visit and on bad Wi-Fi 67a3945 feat(runsheets): Show Agenda switch, and filter actions at the top of the panel e1f8bb8 feat(agenda): show the Meet the Experts schedule 75e4269 feat(runsheets): highlight what's happening now, refresh every minute, close after the weekend 4d54742 fix(admin): show a no-access page instead of the sponsor portal error 2bf7681 feat(runsheets): Agenda and Porters filters, 1-minute bump-in cache f8ba8ca feat(runsheets): copyable volunteer rosters, plenum spans, refresh fix 80ce318 feat(runsheets): agenda sessions, session details, client-side filters and offline 4b4a1ae feat(runsheets): bump-in run sheet from the sponsors board, plus admin refresh fe14cde Merge pull request #24 from dddwa/jakeginnivan/upstream-3-speaker-portal-volunteers 5721e18 test: make the speaker settings and exhibitor tests conference-agnostic 33a1a88 feat(sponsor-portal): exhibitor export room, space number and screen order 2255825 feat(sponsor-portal): exhibitor export loading dock attendees; leave off digital and in-kind sponsors 56eed31 fix(portal): explain an unlinked email instead of "something went wrong" edd8e5c feat(admin): volunteer roster, and read queued planner saves as JSON 16f71c6 feat(speaker-portal): editable speaker settings, RSVP lists and Meet the Experts schedule email 01a28bb Merge pull request #23 from dddwa/jakeginnivan/upstream-2-my-agenda eb38d01 fix(auth): let magic-link login work locally without a SESSION_SECRET 128825a feat(agenda): build my agenda, calendar export and organiser shortlist counts d38d185 Merge pull request #22 from dddwa/jakeginnivan/upstream-1-sponsor-portal-jira-sync 25d412c Merge pull request #21 from dddwa/fix/agenda-revalidate-loop eb94625 test(sponsor-portal): skip Jira mapping tests where no portal is configured a5292e6 feat(sponsor-portal): sponsor follow-up list with mailto drafts 1f6e57b feat(sponsors): community and in-kind sponsor tiers 16f8ee6 chore(content): FAQ and conference-day page fixes 0861cbb fix(agenda): stop a null tagLine 500ing talk pages, and log rejected sponsor saves 33b6af0 feat(app): retire the mobile app without breaking installed copies 1516b02 feat(sponsor-portal): count committee Jira answers in progress, and a support link ff7cb2e feat(sponsor-portal): Jira-canonical sync, committee data protection, exhibitor room c8a4370 feat(sponsor-portal): prefill sponsor profile fields from Jira 1715a75 fix(runsheets): make the public run sheet safe to expose anonymously 961b722 fix(sponsor-portal): harden Jira sync and exports 9504209 Fix agenda builder revalidating in an endless loop 9b163bc Merge pull request #20 from dddwa/jakeginnivan/split-slot-agenda-fixture 4bc5f7f test(fixtures): give the agenda fixture a split-slot room 15024ab Merge pull request #19 from dddwa/jakeginnivan/bring-the-sponsor-portal-up-to-date-with-the-fork 8d0e6ee feat(sponsor-portal): bring the portal up to date with the fork 0a96392 Merge pull request #18 from dddwa/jakeginnivan/pin-sponsor-strip-in-visual-baselines 177c589 fix(ci): stop the setup targets racing each other 997d5e6 test(visual): pin the home page's sponsor strip to fixtures git-subtree-dir: core git-subtree-split: 8a6c80a0c708b5b9378bf611edb2ddebed2c259f
# Conflicts: # core/nx.json # core/website/app/lib/admin-settings/speakers.test.ts # core/website/app/lib/dates/date-lint-rules.test.mjs # core/website/app/lib/dates/dev-date-override.test.ts # core/website/app/lib/feedback/feedback-report.server.ts # core/website/app/lib/feedback/talk-ended.test.ts # core/website/app/lib/published-agenda.server.ts # core/website/app/lib/services/cloudflare/jira-sponsor-sync.server.test.ts # core/website/app/lib/speakers/checklist.test.ts # core/website/app/lib/sponsor-fallback.server.ts # core/website/app/lib/sponsor-fallback.test.ts # core/website/app/lib/sponsors/jira-client.test.ts # core/website/app/lib/sponsors/sponsor-portal-config.test.ts # core/website/app/remix-app-load-context.ts # core/website/app/routes/_layout.agenda.($year).talk.$sessionId.tsx # core/website/app/routes/_layout.agenda.($year).tsx # core/website/app/routes/admin.agenda-shortlist.($year).tsx # core/website/app/routes/admin.feedback.tsx # core/website/app/routes/admin.speakers._index.tsx # core/website/app/routes/admin.sponsors.exhibitor-export.tsx # core/website/app/routes/agenda.my[.ics].tsx # core/website/app/routes/api.runsheets.session.$sessionId.tsx # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/agenda-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-index-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/blog-post-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/content-page-mdx-template-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/home-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/site-header-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/sponsors-visual-webkit-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-chromium-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-chromium-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-chromium-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-firefox-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-firefox-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-firefox-tablet.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-webkit-desktop.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-webkit-mobile.png # core/website/e2e/__screenshots__/visual.spec.ts/talk-detail-visual-webkit-tablet.png # core/website/e2e/feedback-links.spec.ts # core/website/e2e/start-dev-server.mjs # core/website/e2e/temporal-browser.spec.ts
ddd-core#30 makes a fork's .claude/skills symlinks into core/.claude/skills, so a pull updates the skills in effect with no extra step. That replaces scripts/sync-core-skills.mjs, which did the same job by copying on prepare or pnpm sync-skills. Its core-pull step was the one difference left between this fork's core/ and upstream, so that goes too.
This was referenced Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pulls ddd-core through dddwa/ddd-core#30, which carried this fork's #204–#215 upstream, plus the fixes core needed to run them against its stub.
Summary
What arrives in
core/. Mostly this fork's own changes coming back, plus what core added on top:E2E_FIXTURE_CONFERENCE,lib/e2e-fixture-conference.server.ts) thatfeedback-linksandtemporal-browserspecs now opt into, so conference-day tests stop depending on a real year's dates. Years are read throughgetConferences(context)rather thanconferenceManifest.conferences.preblocks taketabIndex={0}(axescrollable-region-focusable).setup-*targets run withparallelism: false(the ENOTEMPTY race)./core-pulland/new-conferenceskill updates: Temporal migration notes, porting root-config changes, and linking skills.Skills are symlinks now, not copies.
ddd-core#30 makes forks link their skills, so a pull updates the skills in effect with no step to remember. That supersedes
sync-core-skills.mjs, and itspnpm sync-skillsstep incore-pullwas the one place this fork'score/differed from upstream.core/now matches ddd-core exactly. The fork's copies had no local edits (checked against core's pre-pull versions), so nothing was lost.Conflicts (97), all expected. The last sync point predated #26, so everything this fork had upstreamed since came back as add/add:
core/nx.json→ stays deleted.e2e/routes.tsauto-merged withHEADER_DATE_STATESdeclared twice. Removed the copy; the file is unchanged frommain.Evidence
nx build websitepnpm vragainst this fork's baselinesnx e2e websitemy-agenda"picking the long talk displaces both short talks" timed out in dark mode, then passed 72/72 on--repeat-each 4. Flaky, not this pullgit-subtree-splittrailer8a6c80a= ddd-core#30's mergeMerge Danger
Door: two-way
No new migrations:
0031_sponsor_feedback.sqlhas been in this fork since #204.Blast Radius: small
core.symlinksis on, and the skills then fail to load. The copy script didn't have that problem. Reverting139f875restores it.🤖 Generated with Claude Code