Repository navigation
Upstream 5/5: feedback, talk dialog and a fixture conference year for e2e (dddperth #198–#203) - #26
Merged
Conversation
JakeGinnivan
force-pushed
the
jakeginnivan/upstream-fork-prs-158-202
branch
from
October 19, 2026 01:47
82944f3 to
8270b83
Compare
JakeGinnivan
force-pushed
the
jakeginnivan/upstream-fork-prs-158-202
branch
from
October 19, 2026 02:09
8270b83 to
2f11bf7
Compare
…el export Upstreamed from dddwa/dddperth#198 (fork merge 37f4654). Visual baselines are left fork-local. - feat(feedback): D1 tables and store for conference and talk feedback - feat(feedback): /feedback form for conference and talk feedback, linked from the agenda - feat(feedback): admin feedback page with per-talk summaries and an Excel export - fix(feedback): send the feedback cookie with data requests so resubmissions replace - chore(2026): commit the public agenda endpoint now the agenda is published - feat(feedback): mark every text field as optional - feat(feedback): scroll to the top and focus the thank-you after submitting - fix(feedback): solid focus outline on inputs and stars - feat(feedback): one talk response per browser, unlimited conference responses
Upstreamed from dddwa/dddperth#199 (fork merge ca5756e). Visual baselines are left fork-local. - feat(theme): dvh, dialog max-height and zero radius tokens - feat(agenda): open talks in a dialog over the agenda, with speaker bios - test(visual): regenerate talk detail baselines for the talk dialog - test(fixtures): label the fixture speaker tagline as a tagline
Upstreamed from dddwa/dddperth#201 (fork merge 2fc2a80). Visual baselines are left fork-local. - feat(agenda): embed talk recordings on the talk detail page - docs(core): prefer Panda tokens over [...] escape-hatch values
Upstreamed from dddwa/dddperth#200 (fork merge a2f8f15). Visual baselines are left fork-local. - feat(admin): grouped sidebar nav, collapsing to a menu drawer on small screens - fix(admin): pin the admin area to the light theme
Upstreamed from dddwa/dddperth#202 (fork merge 67b34c0). Visual baselines are left fork-local. - feat(feedback): refuse feedback on talks that haven't finished - feat(agenda): show feedback links only once a talk has finished - feat(feedback): explain when a linked talk hasn't finished yet - feat(feedback): stop taking feedback on Meet the Experts
Upstreamed from dddwa/dddperth#203 (fork merge e9855a5). Visual baselines are left fork-local. - feat(feedback): ask about Meet the Experts on the conference form
feedback-links.spec.ts (from dddwa/dddperth#202) only passed where the current conference happened to fall on the Sessionize fixture date with an open feedback window. DDD Perth's 2026 does; conference-stub's 2026 is a "save the date" skeleton with no agenda, so here every test in it failed. Instead of depending on any real year's dates, a test can now opt its browser context into a synthetic conference year (e2e/fixtures/conference-year.ts): it sits on FIXTURE_DATE, takes its agenda from the Sessionize fixtures and has its feedback window open. The worker then sees that as the only conference, so it is current by construction. Per context, by cookie, like __devDateOverride — suite-wide would change what `/` and its baselines render for every other test. That needs the request, not the module, to decide which conferences exist: - load-context builds the request's conferences (fixture or manifest) and derives conference state from it; routes read years via getConferences. - getYearConfig(context, year) replaces getYearConfig(year, appConfig). resolveYearConfig keeps a context-free path for code with no request. - Lookups keyed by a portal's configured year (speaker portal endpoint, admin speaker emails, exhibitor export) keep reading the real manifest, explicitly: they are about the real event, not the request. Guarded like the other e2e seams: a production-mode check Vite folds away, plus E2E_FIXTURE_CONFERENCE, set only by e2e/start-dev-server.mjs. The cookie name is in the production-build grep in dev-date-override.test.ts.
dddwa/dddperth#199 opens talks in a dialog with speaker bios, which changes the talk-detail capture at every engine and viewport: 9 baselines, the same 9 the fork regenerated. Rendered here in the pinned container against conference-stub's theme and fixture speakers, not copied from the fork. No other baseline moved across the whole series: slices 1-4 pass the visual suite against the existing baselines unchanged.
JakeGinnivan
force-pushed
the
jakeginnivan/upstream-fork-prs-158-202
branch
from
October 19, 2026 02:14
2f11bf7 to
ebe65ca
Compare
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.
Summary
5/5 of the upstream catch-up. Conference and talk feedback, the talk dialog and admin nav, fork PRs #198–#203.
New: a fixture conference year for e2e (8652a72). The feedback e2e spec needs a conference whose agenda is published and whose feedback is open, but the stub's real 2026 is only a save-the-date. Rather than tie tests to a real year's config, a test can now opt its browser into a made-up year:
sequenceDiagram participant Spec participant Worker Spec->>Worker: cookie __e2eFixtureConference Worker->>Worker: load-context: if not production && E2E_FIXTURE_CONFERENCE=true Worker->>Worker: conferences = FIXTURE_CONFERENCES (fixture year only) Worker-->>Spec: /agenda/FIXTURE_YEAR with feedback openIt works per browser, like
__devDateOverride, so the home page and its baselines still render the real conference. Portal-year lookups (map-sessionize, admin.speakers, exhibitor-export) deliberately keep readingconferenceManifest.conferences.Evidence
feedback-links.spec.tsfails in the stub because 2026 has no published agenda.After: e2e 67 passed. Build, typecheck, lint and unit tests (734 passed) all pass.
dev-date-override.test.tsgreps the production worker for the fixture cookie name and doesn't find it.pnpm vr81 passed. The 9talk-detail-*baselines were regenerated in the container (82944f3), because the talk page is now a dialog with the speaker's bio. Those are the only baselines that change across the whole stack.Merge Danger
Door: one-way
Adds D1 migrations 0029–0030.
Blast Radius: agenda
The
getYearConfigsignature change touches about 30 call sites. Forks with their own callers will need to switch to the(context, year)form, and dddperth's next/core-pullwill conflict there and in a few tests. Resolve those toward upstream.Part of a 5-PR stack that brings ddd-core up to date with every
core/change merged indddwa/dddperthsince #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.