Repository navigation
Upstream dddperth #204–#215: sponsor feedback, portal move, Temporal dates, blog - #30
Merged
Merged
Conversation
…th portals a proper header Upstreamed from dddwa/dddperth#207.
Upstreamed from dddwa/dddperth#211. Upstream-only adjustments, since core has code the fork doesn't: - e2e/fixtures/conference-year.ts (the fixture conference year) moves from Luxon to conferenceTime getters, like the stub's year configs. - admin-settings/speakers.test.ts keeps core's conference-agnostic inConferenceZone helper, rebuilt on conferenceTime. - dev-date-override.test.ts keeps the fixture-conference-cookie marker. - nx.json gets the fork's lint inputs, so lint re-runs when the date rules change (path is eslint-rules/ here, core/eslint-rules/ in a fork).
…ddperth.com Upstreamed from dddwa/dddperth#209. The Medium posts themselves are fork content and stay there; this carries the blog machinery (legacy-host redirects, header nav, fixture blog posts for the e2e and visual suites). e2e/routes.ts takes the fixture post's slug in place of the stub's own post, since the suites now render e2e/fixtures/blog for every conference. Visual baselines are regenerated here against the stub, not copied.
Three tests from dddperth #210/#211 passed only where the conference zone is Australia/Perth. In ddd-core the stub runs in Etc/UTC: - checklist: NOW was a Perth ZonedDateTime while due dates parse into the conference zone, and Temporal throws on day arithmetic across zones. NOW keeps the same instant, expressed in the conference zone as the app's clock always is. - talk-ended: the default-zone case built its instants as +08:00. - date-lint-rules: the fork's conference/config path doesn't exist here; the stub case covers core.
…otes Core's counterpart to the CLAUDE.md section dddperth #209 added, in core's own register.
From dddperth #211, the spec assumed /agenda/2026 is the current conference with a published agenda on the fixture date, which holds in DDD Perth and not in the stub. It now opts into the fixture conference year, as feedback-links.spec.ts does.
dddperth #209 gave the content grid a minmax(0, 1fr) track so a code block no longer widens the page on phones. The block now scrolls inside the column instead, and axe's scrollable-region-focusable flags it on /e2e-content-fixture: a scrollable region needs to take focus so it can be scrolled without a mouse.
…d and header Rendered in the pinned Playwright container against conference-stub, not copied from the fork. - blog index/post (18): the suites now render e2e/fixtures/blog (#209). - content page, mobile (3): the minmax(0, 1fr) content track stops long lines running off the right edge; text now wraps and only the code block scrolls. Dates also read "17 Oct" rather than "Oct 17" (#210/#211). - site-header (9, new): the header's own capture from #209. The header shows the DDD Perth logo because core's logo.svg still is one; that predates this branch (main's home baseline shows it too).
…t-config changes /core-pull now explains the Luxon -> Temporal type errors and the eager- construction trap, and adds a step to port changes in core's root configs (eslint, tsconfig.base, package.json) to the fork root, which a subtree pull never touches. /new-conference repoints the copied date-rules block at the fork's paths.
/core-pull only updates core/, so a fork's copied skills stayed at whatever version it was scaffolded from, and a pull that changed how pulls work was run by the old instructions. /new-conference now symlinks core-pull, core-push and new-conference into core/.claude/skills/, and /core-pull converts an existing fork's copies, checking first for fork edits, then re-reads its own updated copy.
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.
Upstreams the eight dddperth PRs core didn't have yet: #204, #207, #210, #214, #215, #211, #212 and #209. Everything up to #208 was already here (#26, #27 and #29).
Summary
One commit per fork PR, in the fork's merge order, then the adjustments core needed:
Each PR went across as a 3-way patch of its
core/diff, minus baselines, so any clash with code only core has stopped the patch instead of being overwritten. Four did, and each keeps core's code:admin-settings/speakers.test.tskeeps core'sinConferenceZonehelper, rebuilt onconferenceTimedev-date-override.test.tskeeps the fixture-conference-cookie marker next to #209's fixture-blog onee2e/routes.tstakes #209's fixture blog slug: the suites now rendere2e/fixtures/blogfor every conferencenx.jsongets #211's lint inputs, witheslint-rules/here in place ofcore/eslint-rules/Left in the fork on purpose: its 33 baselines, the Medium posts,
conference/config/**,scripts/sponsor-manager.mjs, and its rootCLAUDE.md/AGENTS.md. Core already had its own date-doc and Temporal notes, which arrived through #211.Evidence
Stub-only failures, fixed in core. These tests and checks from the fork passed only where the conference zone is Perth, or failed only once they ran against the stub:
checklist.test.tsRangeError: Timezones must be the same if unit is a day unit(NOW was Perth, due dates parse into the stub'sEtc/UTC)talk-ended.test.tsdefault zone+08:00conferenceTimedate-lint-rules.test.mjsENOENT …/conference/config(a fork-only path)temporal-browser.spec.ts/agenda/2026feedback-links.spec.ts/e2e-content-fixturescrollable-region-focusableonpre(#209'sminmax(0, 1fr)column made the code block scroll)pregetstabIndex={0}Visual.
pnpm vr --update-snapshotsin the pinned container, then a cleanpnpm vragainst the result: 108 passed, 36 skipped.site-header(9 new): #209's header captureThe header shows the DDD Perth logo. That isn't from this branch: core's
logo.svgalready is DDD Perth's, andmain's home baseline shows it too. It's a follow-up PR, not part of this one.Rest of the suite: typecheck, lint and build are clean. Unit tests: 892 passed, 38 skipped. Two typed-ESLint cases in
date-lint-rules.test.mjstimed out at 5s once under full-suite load and passed on rerun; the fork has the same file. E2E: 69 passed, 36 skipped. Thea11y-e2ecomment inpr.ymlsays 14 skipped. I haven't checked how much of that gap is new; most likely the new date-dependent tests skip in the stub.Fork vs this branch. Comparing this branch's tree with the fork's current
core/, ignoring baselines: every remaining difference is either divergence core already had, or one of the four hand resolutions above. That check can't see files that exist only in core; there I changed onlyconference-year.tsandnx.json.Merge Danger
Door: one-way, narrowly
0031_sponsor_feedback.sqlcreates a new table (CREATE TABLE IF NOT EXISTS). It's additive, but once a fork applies it to D1, a code revert doesn't undo it. Everything else is a two-way door, and/portal/*keeps working through a 308 to/sponsor-portal/*.Blast Radius: wide
ConferenceYeardates from Luxon to Temporal. A fork that hasn't ported itsconference/config/years/*.tstoconferenceTimegetters stops typechecking on its next/core-pull. DDD Perth already has; the stub is ported here./core-pullnow walks a fork through the port (dd3b73e), including the step nothing forces: copying the date lint rules into the fork's rooteslint.config.mjs, which a subtree pull never updates. Forks also kept copies of the skills, so a pull never updated them; new forks now symlink them intocore/.claude/skills/, and/core-pullconverts an existing fork's copies. An existing fork's old copy never learns any of this on its own, so the pull that lands this PR should be run fromcore/.claude/skills/core-pull/SKILL.md(tell the agent to read it after the subtree pull). That run converts the copies, and every pull after it uses core's current skill./portal: they redirect, but anything that matches on the exact path breaks.After this merges, DDD Perth should run
/core-pullto pick up the core-only fixes above. The fork most likely fails thepreaxe check today too, unnoticed because its a11y job doesn't block merging.🤖 Generated with Claude Code