Skip to content

Comments

v4.0.0#610

Open
jthrilly wants to merge 1381 commits intomainfrom
next
Open

v4.0.0#610
jthrilly wants to merge 1381 commits intomainfrom
next

Conversation

@jthrilly
Copy link
Member

@jthrilly jthrilly commented Feb 9, 2026

Significant release!

  • New form system
  • Schema 8
    • Geospatial interface
    • Anonymisation interface
    • Multi-select dyad census
    • Family tree census
  • New drag and drop system
  • New dashboard UI
  • Multi-user capability
  • Preview mode
  • React 19 and Next 16

Waiting on:

  • New form system #453
  • Implementation of same-sex relationships in family tree census
  • Upgrade to posthog based analytics
  • React 19 and Next 16 upgrade
  • Bugfixes for dashboard
  • Bugfixes for ALL interview features

buckhalt and others added 14 commits February 3, 2026 11:37
validation in addNode was rejecting adding nodes from csv on name generator roster and side panel with external data. fix adds allowUnknownAttributes flag and test coverage
selected styling, new size system, layout on per alter form
Incorporates v4 fixes:
- Interface styling fixes
- Side panel encrypted fixes
- Preview protocol import data fix
- API key assets in preview mode, geospatial interface
- Dyad/tie strength census runtime errors fix
- Node styling fixes
- Allow external data attributes when adding nodes from panels
- Narrative interface fix
- Click handler and drag working together
cache serialization issue, settings key prop warning, fix table overflow
use css clamp() for scaling node sizes, Add size-aware label truncation
remove hardcoded node size after node size refactor, fix slider labels overlapping
V4.0.0 (Schema 8 + Architect Web)
Copilot AI review requested due to automatic review settings February 9, 2026 11:09
@vercel
Copy link

vercel bot commented Feb 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fresco-sandbox Ready Ready Preview, Comment Feb 24, 2026 7:22pm
fresco-silos Ready Ready Preview, Comment Feb 24, 2026 7:22pm
fresco-storybook Ready Ready Preview, Comment Feb 24, 2026 7:22pm

Request Review

@netlify
Copy link

netlify bot commented Feb 9, 2026

Deploy Preview for fresco-sandbox ready!

Name Link
🔨 Latest commit c6f5899
🔍 Latest deploy log https://app.netlify.com/projects/fresco-sandbox/deploys/698a35907e33ebf10843bf3f
😎 Deploy Preview https://deploy-preview-610--fresco-sandbox.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Major v4.0.0 release update introducing a new form system, schema v8 support, preview mode, multi-user capability, and a revamped drag-and-drop/dashboard UI, alongside significant refactors and infrastructure/config updates.

Changes:

  • Added preview mode infrastructure (API routes, DB fields, auth toggle, preview interview flow).
  • Introduced new form field system (TanStack Form contexts/hooks + many new field components).
  • Reworked drag-and-drop (new lib/dnd store/hooks/utils, plus refactors in interviewer components).

Reviewed changes

Copilot reviewed 293 out of 804 changed files in this pull request and generated 11 comments.

Show a summary per file
File Description
lib/interviewer/components/Panels.js Formatting simplification for panel wrapper
lib/interviewer/components/Panel.tsx New TSX panel component with collapse/minimize/highlight logic
lib/interviewer/components/Panel.js Removed legacy Panel implementation
lib/interviewer/components/NodeBin.tsx New NodeBin using new ~/lib/dnd drop target hook
lib/interviewer/components/NodeBin.js Removed legacy NodeBin drag/drop HOC implementation
lib/interviewer/components/Node.tsx New memoized Node wrapper + MotionNode
lib/interviewer/components/Node.js Removed legacy Node implementation
lib/interviewer/components/Navigation.tsx Navigation refactor (props-driven disable state + passphrase prompt)
lib/interviewer/components/MultiNodeBucket.js Removed legacy bucket component
lib/interviewer/components/Edge.js Updated edge color selector wiring
lib/interviewer/components/DialogManager.js Redux action import refactor
lib/interviewer/components/CollapsablePrompts.js Added support for rendering children in prompts container
lib/interviewer/components/CategoricalItem.js Removed legacy categorical item implementation
lib/interviewer/components/Canvas/NodeLayout.js Updated updateNode API usage
lib/interviewer/components/Canvas/NarrativeEdgeLayout.js Minor formatting cleanup
lib/interviewer/components/Canvas/LayoutNode.js Layout node rendering tweaks (size + import ordering)
lib/interviewer/components/Canvas/EdgeLayout.js Selector refactor for codebook lookup
lib/interviewer/components/Canvas/ConvexHulls.js Selector import consolidation
lib/interviewer/components/Canvas/Canvas.js Formatting cleanup
lib/interviewer/components/BackgroundImage.js Formatting cleanup
lib/interviewer/behaviours/scrollable.js Removed legacy scrollable HOC
lib/interviewer/behaviours/DragAndDrop/useDropMonitor.js Removed legacy drop monitor hook
lib/interviewer/behaviours/DragAndDrop/store.js Store middleware updated for unserializable drag/drop values
lib/interviewer/behaviours/DragAndDrop/reducer.js Action type constants changed from Symbols to strings
lib/interviewer/behaviours/DragAndDrop/index.js Export surface adjusted
lib/interviewer/behaviours/DragAndDrop/MonitorDropTarget.js Removed legacy monitor HOC
lib/interviewer/behaviours/DragAndDrop/MonitorDragSource.js Removed legacy monitor HOC
lib/interviewer/behaviours/DragAndDrop/Monitor.js Removed legacy monitor base
lib/interviewer/behaviours/DragAndDrop/DropTarget.js Import cleanup
lib/interviewer/behaviours/DragAndDrop/DropObstacle.js Formatting + minor simplifications
lib/interviewer/behaviours/DragAndDrop/DragSource.js Defaults added for handler props
lib/interviewer/behaviours/DragAndDrop/DragPreview.js Removed eslint disable header (left blank line)
lib/interviewer/behaviours/AssetMetaProvider.js Selector import/path refactor
lib/form/utils/scrollToFirstError.ts Added helper to scroll to first form error
lib/form/utils/formContexts.ts Added TanStack Form contexts
lib/form/types.ts Added core form typing layer
lib/form/hooks/useTanStackForm.ts Added TanStack Form hook wrapper
lib/form/components/fields/utils/options.js Added option normalization helpers
lib/form/components/fields/VisualAnalogScale.js Added VAS wrapper field
lib/form/components/fields/ToggleButton.tsx Added ToggleButton field
lib/form/components/fields/Toggle.tsx Added Toggle field
lib/form/components/fields/TextArea.tsx Added TextArea field
lib/form/components/fields/Slider/index.js Added Slider barrel export
lib/form/components/fields/Slider/Track.js Added slider Track component
lib/form/components/fields/Slider/Tick.js Added slider Tick component
lib/form/components/fields/Slider/Field.js Added Slider field wrapper
lib/form/components/fields/Search.tsx Added Search field wrapper
lib/form/components/fields/RelativeDatePicker.js Added relative date picker wrapper
lib/form/components/fields/Radio.tsx Added Radio field
lib/form/components/fields/MarkdownLabel.js Added markdown label wrapper
lib/form/components/fields/Markdown.js Added markdown renderer with sanitize/raw support
lib/form/components/fields/LikertScale.js Added Likert scale wrapper
lib/form/components/fields/FieldSkeleton.tsx Added skeleton for loading states
lib/form/components/fields/DatePicker/index.js Added DatePicker barrel export
lib/form/components/fields/DatePicker/helpers.js Added DatePicker helper utilities
lib/form/components/fields/DatePicker/Panels.js Added DatePicker animated panels container
lib/form/components/fields/DatePicker/Panel.js Added DatePicker animated panel
lib/form/components/fields/DatePicker/Field.js Added DatePicker field wrapper
lib/form/components/fields/DatePicker/DatePicker/helpers.js Added DatePicker internal helpers
lib/form/components/fields/DatePicker/DatePicker/Years.js Added years range supplier
lib/form/components/fields/DatePicker/DatePicker/Months.js Added months range supplier
lib/form/components/fields/DatePicker/DatePicker/Days.js Added days range supplier
lib/form/components/fields/DatePicker/DatePicker/DatePickerContext.js Added DatePicker context
lib/form/components/fields/DatePicker/DatePicker/Date.js Added DatePicker date selector helper
lib/form/components/fields/Checkbox.js Added checkbox field component (redux-form style props)
lib/form/components/fields/Boolean.js Added boolean field component
lib/dnd/utils.ts Added DnD hit detection + raf throttle utilities
lib/dnd/types.ts Added core DnD types
lib/dnd/index.ts Added DnD public exports
lib/dnd/tests/setup.ts Added test environment setup for DnD
lib/dnd/DndStoreProvider.tsx Added Zustand-based DnD store provider + drag preview portal
lib/dialogs/useDialog.stories.tsx Added story for useDialog
lib/dialogs/Dialog.stories.tsx Added dialog stories
lib/dialogs/ControlledDialog.tsx Added controlled dialog variant
lib/dialogs/ControlledDialog.stories.tsx Added controlled dialog stories
lib/db/schema.prisma Added preview + pending protocol fields, ApiToken model, asset value
lib/db/migrations/20251204222357_add_protocol_is_pending/migration.sql Migration: add Protocol.isPending
lib/db/migrations/20251118073416_add_preview_mode_and_api_tokens/migration.sql Migration: preview mode + ApiToken + index
lib/db/migrations/20250426201139_add_protocol_experiments/migration.sql Migration: add Protocol.experiments
lib/db/migrations/20250122184616_add_asset_value/migration.sql Migration: add Asset.value + join table pk changes
lib/cache.ts Cache tags refactor + multi-tag revalidation + deployment keying
knip.json Knip config updates + Playwright wiring
jsconfig.json Added JS compilerOptions config file
hooks/usePortal.ts Made usePortal client-safe for SSR + delayed mount
hooks/useCanvas.ts Formatting cleanup
hooks/use-data-table.tsx Updated data table types import path
fresco.config.ts Added schema v8 + preview min architect version
env.js Added PREVIEW_MODE env var
docker-compose.prod.yml Updated prod compose env + ports + volumes
docker-compose.dev.yml YAML formatting cleanup
components/ui/tooltip.tsx Tailwind class ordering tweaks
components/ui/toaster.tsx Tailwind class ordering tweaks
components/ui/toast.tsx Fixed Heading import path
components/ui/table.tsx Table container styling/layout changes
components/ui/switch.tsx Tailwind class ordering tweaks
components/ui/separator.tsx Quote/style normalization
components/ui/select.tsx Tailwind class ordering tweaks
components/ui/progress.tsx Tailwind class ordering tweaks
components/ui/popover.tsx Quote/style normalization
components/ui/dialog.tsx Fixed typography import paths
components/ui/checkbox.tsx Tailwind class ordering tweaks
components/ui/card.tsx Fixed Heading import path + class changes
components/ui/badge.tsx Fixed export formatting
components/ui/Label.tsx Fixed Heading import path
components/ui/Input.tsx Tailwind class ordering tweaks
components/ui/CloseButton.tsx Made onClick optional + class ordering
components/ui/Button.tsx Updated tableHeader variant styles
components/ui/AlertDialog.tsx Fixed typography import paths
components/ui/Alert.tsx Fixed typography import paths
components/typography/Heading.tsx Minor expression parenthesization cleanup
components/layout/SettingsSection.tsx Updated Heading import path
components/layout/ResponsiveContainer.tsx Added new content base size
components/interview/ActionButton.tsx Added interview action button component
components/interview/ActionButton.stories.tsx Added ActionButton story
components/data-table/data-table.tsx Updated types import path + layout tweaks
components/data-table/data-table-toolbar.tsx Updated types import path + layout tweaks
components/data-table/data-table-skeleton.tsx Layout tweaks
components/data-table/data-table-pagination.tsx Updated pageSizes import path
components/data-table/data-table-floating-bar.tsx Minor typing + class ordering
components/data-table/data-table-faceted-filter.tsx Updated Option import path + class ordering
components/data-table/advanced/data-table-advanced-toolbar.tsx Updated types import path + wrapper removal
components/data-table/advanced/data-table-advanced-filter.tsx Updated types import path
components/VersionSection.tsx Typography import path updates + class ordering
components/Providers/index.tsx Added global Providers wrapper (Motion/Radix/Dialog/Toaster)
components/Providers/RadixDirectionProvider.tsx Added Radix direction provider
components/ProtocolImport/JobReducer.ts Added “Migrating protocol” import status
components/ProtocolImport/JobCard.tsx Typography import updates + class ordering
components/PreviewModeAuthSwitch.tsx Added switch for preview auth requirement
components/ErrorReportNotifier.tsx Class ordering tweaks
components/ErrorDetails.tsx Import ordering + class ordering tweaks
components/DynamicLucideIcon.tsx Added CMS-safe lucide icon resolver
components/DataTable/types.ts Added new activity types (API token + preview mode)
components/DataTable/DataTable.tsx Removed redundant wrapper border
components/DataTable/ColumnHeader.tsx UI tweaks for sortable headers
components/CloseButton.tsx Added new CloseButton wrapper component
components/BackgroundBlobs/Canvas.tsx Tailwind conversion for sizing
components/BackgroundBlobs/BackgroundBlobs.tsx Inlined RNG helpers (removed import)
app/not-found.tsx Typography import path updates + class ordering
app/layout.tsx Added Providers + ResponsiveContainer path change
app/global-error.tsx Typography import path updates + ResponsiveContainer path change
app/error.tsx Typography import path updates + ResponsiveContainer path change
app/dashboard/settings/loading.tsx Typography + ResponsiveContainer import path updates
app/dashboard/settings/_components/UpdateUploadThingToken.tsx Switched to generic UpdateSettingsValue API
app/dashboard/settings/_components/UpdateInstallationId.tsx Switched to generic UpdateSettingsValue API
app/dashboard/protocols/page.tsx Typography + ResponsiveContainer import path updates
app/dashboard/protocols/loading.tsx Typography + ResponsiveContainer import path updates
app/dashboard/protocols/_components/DeleteProtocolsDialog.tsx Updated Protocol type import + improved warning copy
app/dashboard/participants/page.tsx Typography + ResponsiveContainer import path updates
app/dashboard/participants/loading.tsx Typography + ResponsiveContainer import path updates
app/dashboard/participants/_components/ParticipantModal.tsx Typography import path updates
app/dashboard/participants/_components/ImportCSVModal.tsx Typography import path updates + error message change
app/dashboard/participants/_components/ExportParticipants/ImportExportSection.tsx Typography + ResponsiveContainer import updates
app/dashboard/participants/_components/ExportParticipants/GenerateParticipantURLsButton.tsx Updated types to table client exports
app/dashboard/participants/_components/ExportParticipants/ExportParticipants.tsx Added SuperJSON parsing for participants payload
app/dashboard/participants/_components/ExportParticipants/ExportCSVParticipantURLs.tsx Updated types to table client exports
app/dashboard/participants/_components/DropzoneField.tsx Typography import path updates
app/dashboard/participants/_components/DeleteParticipantsDialog.tsx Alert variant set + improved warning copy
app/dashboard/page.tsx Typography + ResponsiveContainer import path updates
app/dashboard/loading.tsx Typography + ResponsiveContainer import path updates
app/dashboard/interviews/page.tsx Typography + ResponsiveContainer import path updates
app/dashboard/interviews/loading.tsx Typography + ResponsiveContainer import path updates
app/dashboard/interviews/_components/GenerateInterviewURLs.tsx Added SuperJSON parsing for protocols payload
app/dashboard/interviews/_components/ExportOptionsView.tsx Typography import path updates
app/dashboard/interviews/_components/ExportInterviewsDialog.tsx Added SuperJSON parsing for prepared export payloads
app/dashboard/interviews/_components/ExportCSVInterviewURLs.tsx Updated protocol/interview types
app/dashboard/_components/UploadThingModal.tsx Typography import path updates
app/dashboard/_components/UpdateSettingsValue.tsx Simplified API: now uses setAppSetting by key
app/dashboard/_components/SummaryStatistics/SummaryStatistics.tsx ResponsiveContainer import path updates
app/dashboard/_components/SummaryStatistics/StatCard.tsx Typography import path updates
app/dashboard/_components/RecruitmentTestSectionServer.tsx Typography import path updates
app/dashboard/_components/RecruitmentTestSection.tsx Added SuperJSON parsing for promises
app/dashboard/_components/ProtocolsTable/ProtocolsTableClient.tsx Added SuperJSON parsing + exported ProtocolWithInterviews type
app/dashboard/_components/ProtocolsTable/ProtocolsTable.tsx Removed unstable_noStore usage
app/dashboard/_components/ProtocolsTable/Columns.tsx Updated imports + ProtocolWithInterviews type source
app/dashboard/_components/ProtocolsTable/ActionsDropdown.tsx Updated ProtocolWithInterviews type source
app/dashboard/_components/ProtocolUploader.tsx Class ordering tweaks
app/dashboard/_components/ParticipantsTable/ParticipantsTableClient.tsx Added SuperJSON parsing + exported ParticipantWithInterviews type
app/dashboard/_components/ParticipantsTable/GenerateParticipantURLButton.tsx Updated protocol types + typography import path
app/dashboard/_components/ParticipantsTable/Columns.tsx Updated protocol/participant type sources + typography import path
app/dashboard/_components/ParticipantsTable/ActionsDropdown.tsx Updated participant type source
app/dashboard/_components/NavigationBar.tsx Typography import path update + Image priority
app/dashboard/_components/InterviewsTable/InterviewsTable.tsx Added SuperJSON parsing for interviews payload
app/dashboard/_components/ActivityFeed/utils.ts Updated ActivityType type import path
app/dashboard/_components/ActivityFeed/SearchParams.ts Updated filter/sort type import path
app/dashboard/_components/ActivityFeed/ColumnDefinition.tsx Updated data-table types import path + minor cell render tweak
app/api/uploadthing/route.ts Use derived base URL for callback, tolerate missing token
app/api/test/clear-cache/route.ts Added test-only cache invalidation endpoint
app/api/preview/types.ts Added preview message exchange types
app/api/preview/helpers.ts Added preview mode auth helper + CORS response helpers
app/(interview)/preview/layout.tsx Added preview layout with small-screen overlay
app/(interview)/preview/[protocolId]/route.ts Added preview protocol gate + redirect handler
app/(interview)/preview/[protocolId]/interview/page.tsx Added preview interview page (in-memory interview construction)
app/(interview)/layout.tsx Added shared interview root layout with metadata + styles import
app/(interview)/interview/layout.tsx Simplified interview layout (moved overlay out)
app/(interview)/interview/finished/page.tsx Typography import path updates + class ordering
app/(interview)/interview/_components/SmallScreenOverlay.tsx Typography import path updates
app/(interview)/interview/_components/ServerSync.tsx Removed legacy client-side sync component
app/(interview)/interview/_components/InterviewShell.tsx Switched to SuperJSON payload + store factory + DnD provider
app/(interview)/interview/[interviewId]/sync/route.ts Added POST route to persist interview state
app/(interview)/interview/[interviewId]/page.tsx Switched to SuperJSON payload + updated finished interview guard
app/(interview)/interview/[interviewId]/layout.tsx Added per-session layout with small-screen overlay
app/(blobs)/layout.tsx Class ordering tweaks
app/(blobs)/expired/page.tsx Removed runtime redirect check + styling tweak
app/(blobs)/(setup)/setup/page.tsx Class ordering tweaks
app/(blobs)/(setup)/layout.tsx Forced dynamic rendering for DB-backed expiry check
app/(blobs)/(setup)/_components/SignInForm.tsx Typography import path updates
app/(blobs)/(setup)/_components/Sidebar.tsx Typography import path updates
app/(blobs)/(setup)/_components/OnboardSteps/UploadProtocol.tsx Typography import path updates
app/(blobs)/(setup)/_components/OnboardSteps/ManageParticipants.tsx Typography import path updates
app/(blobs)/(setup)/_components/OnboardSteps/Documentation.tsx Typography import path updates
app/(blobs)/(setup)/_components/OnboardSteps/CreateAccount.tsx Typography import path updates
app/(blobs)/(setup)/_components/OnboardSteps/ConnectUploadThing.tsx Typography import path updates
actions/uploadThing.ts Updated UploadThing helper import path
actions/reset.ts Batch tag revalidation + UploadThing helper import path update
actions/protocols.ts Protocol insert refactor (schema/typing changes)
actions/appSettings.ts App setting schema refactor + centralized getStringValue
actions/activityFeed.ts Updated activity types import path
Dockerfile Added build arg + NODE_OPTIONS change + prisma CLI install step
CLAUDE.md Documentation whitespace + “Debugging” tips section
.vscode/settings.json Editor defaults + Tailwind regex tweaks
.vscode/launch.json JSON formatting cleanup
.vscode/extensions.json JSON formatting cleanup
.storybook/preview.tsx Switched to nextjs-vite preview + Providers decorator
.storybook/preview.ts Removed old preview config
.storybook/main.ts Switched Storybook framework to @storybook/nextjs-vite
.prettierrc Added tabWidth/useTabs options
.github/workflows/docker-build-pr.yml Input to disable image optimization + renamed image
.github/workflows/chromatic.yml Added Chromatic CI workflow
.github/dependabot.yml Quote/style normalization
.github/workflows/update-snapshots.yml Removed snapshot update workflow
.github/workflows/playwright.yml Removed Playwright CI workflow
.eslintrc.cjs Removed legacy ESLint config
.serena/memories/* Removed Serena memory docs/ignores
Comments suppressed due to low confidence (1)

actions/protocols.ts:1

  • The function signature indicates protocolInsertSchema is the source of truth, but the runtime validation (protocolInsertSchema.parse(input)) was removed. This allows malformed/untrusted input to reach Prisma writes (and can cause runtime exceptions or invalid DB state). Re-introduce protocolInsertSchema.parse(input) (or safeParse with a clear error) and destructure from the parsed result.
'use server';

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

jthrilly and others added 2 commits February 9, 2026 13:20
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
jthrilly and others added 2 commits February 9, 2026 13:31
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI commented Feb 9, 2026

@jthrilly I've opened a new pull request, #611, to work on those changes. Once the pull request is ready, I'll request review from you.

…_yarn/next/posthog/nextjs-config-1.8.18

chore(deps): Bump @posthog/nextjs-config from 1.8.17 to 1.8.18
@github-actions
Copy link

Bumps [@prisma/adapter-neon](https://github.com/prisma/prisma/tree/HEAD/packages/adapter-neon) from 7.4.0 to 7.4.1.
- [Release notes](https://github.com/prisma/prisma/releases)
- [Commits](https://github.com/prisma/prisma/commits/7.4.1/packages/adapter-neon)

---
updated-dependencies:
- dependency-name: "@prisma/adapter-neon"
  dependency-version: 7.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@github-actions
Copy link

@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

…_yarn/next/prisma/adapter-neon-7.4.1

chore(deps): Bump @prisma/adapter-neon from 7.4.0 to 7.4.1
@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

This enables type-ahead search and ARIA accessibility for all Collection
usages. Adds textValueExtractor to all production call sites (NodeList,
OneToManyDyadCensus, NameGeneratorRoster) using codebook-based label
resolution. Adds comprehensive storybook interaction tests covering
keyboard navigation, selection modes, type-ahead search, and disabled
items.
Covers layout system, selection modes, keyboard navigation, type-ahead
search, sorting, filtering, drag-and-drop, virtualization, animation,
context hooks, data attributes, and empty state.
…ation bugs

DyadCensus & TieStrengthCensus:
- Flatten fragmented hook logic (useSteps, useEdgeState, useAutoAdvance) into
  the main component with inline state and effects
- Use useBeforeNext for navigation flow and useStageValidation for toast-based
  validation instead of custom beforeNext handlers
- Extract interviewToastManager as a shared singleton for toast positioning
- Add getNodePairs selector for computing dyad pairs from Redux state
- Delete useSteps.ts, useEdgeState.ts, useAutoAdvance.ts, and
  TieStrengthCensus/helpers.ts

InterviewStoryShell:
- Add two-phase showStage rendering to match real InterviewShell, fixing blank
  screens when NodeList onAnimationComplete never fired
- Use useSelector(formIsReady) for pulseNext instead of store.subscribe()
- Add AnimatePresence with keyed motion.div for proper stage transitions
- Remove withInterviewAnimation decorator from all stories using
  InterviewStoryShell to eliminate competing motion contexts

NameGenerator:
- Fix maxNodes toast not appearing on first load in StrictMode by deferring
  toast creation with setTimeout(0)
- Add interaction tests for min/max node validation in stories
Replaces useStageValidation, useBeforeNext, useReadyForNextStage,
and StageMetadataContext with a single props-based StageApi object
using a unified constraint model.
@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

1 similar comment
@github-actions
Copy link

@github-actions
Copy link

🎭 Playwright E2E Test Report

Tests failed. View the full report here:

👉 https://complexdatacollective.github.io/Fresco/pr-610/

Report details

@github-actions
Copy link

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.

3 participants