Skip to content

v4.0.0#610

Open
jthrilly wants to merge 1237 commits intomainfrom
next
Open

v4.0.0#610
jthrilly wants to merge 1237 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

jthrilly and others added 30 commits January 19, 2026 09:28
…nts/CensusForm.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Add sort state to collection store with resortItems action
- Create SortManager class for managing sort operations
- Add useSortState hook for syncing sort props with store
- Create CollectionSortButton and CollectionSortSelect UI components
- Add SortManagerContext for accessing sort manager in children
- Support controlled/uncontrolled sorting modes
- Support multiple sort types: string, number, date, boolean
- Support array order sorting with '*' property
- Add sorting stories to Storybook
- Fix story containers to use fixed height instead of h-screen

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use callback ref with MutationObserver to scroll highlighted items
into view when navigating with arrow keys. The previous useEffect
approach didn't work because the list element is rendered in a
Portal and doesn't exist at component mount time.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add playwright-report to eslint ignores
- Fix TypeScript type errors in InterviewsTable, ResetButton, UploadThingModal, GenerateParticipantURLsButton, Toast, PassphrasePrompter
- Delete unused files: TestCombobox, ExportCSVParticipantURLs, JobReducer, command, Divider, separator, usePortal
- Remove unused dependencies: @radix-ui/react-alert-dialog, @radix-ui/react-separator, cmdk
- Remove unused exports: SettingsFieldSkeleton, ToastProvider, comboboxActionVariants
- Fix unresolved import in legacy-ui styles

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…andlers

Add extractValue utility to allow form field components to pass either
direct values or native change events to onChange. InputField and TextArea
now pass events directly, while useField handles value extraction.

- Add isChangeEvent type guard and extractValue utility
- Update useField to extract values from events automatically
- InputField and TextArea now pass native events directly
- Other field components continue passing direct values unchanged
- Add FormChangeEvent type export for reuse

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add MobileNavDrawer component with hamburger menu and slide-in sheet
- Hide desktop nav links below tablet breakpoint (768px)
- Progressive text hiding: "Fresco" and "Settings" text hidden below laptop
- Fix Settings isActive check (was /settings, now /dashboard/settings)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
stopgap to fix bug until new form system is merged
- Convert OrdinalBin.jsx to TypeScript
- Move interface to self-contained folder structure:
  - OrdinalBin/OrdinalBin.tsx (main interface)
  - OrdinalBin/components/OrdinalBins.tsx
  - OrdinalBin/components/OrdinalBinItem.tsx
  - OrdinalBin/useOrdinalBins.ts (hook)
- Replace Redux connect() with hooks (useSelector, useAppDispatch)
- Add drag-and-drop support via useDropTarget hook
- Add Storybook stories for OrdinalBins component
- Add type declarations for color module
- Delete legacy containers/OrdinalBins.jsx

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rewrote NodeList as a thin wrapper around Collection with InlineGridLayout
- Uses useDragAndDrop hook from collection module for drag/drop functionality
- Removed disableDragNew and hoverColor props (unused/redundant)
- Added virtualized and overscan props for large lists
- Drop styling now uses data attributes (data-drop-target-valid, etc.)
- Preserved deprecated exports (nodeListVariants, NodeTransition) for backwards compat

Updated usage sites:
- OrdinalBinItem: removed unused hoverColor prop
- NameGenerator: fixed onDrop handler signature, removed dead listId
- NameGeneratorRoster: removed itemComponent, enabled virtualized mode
- NodePanels: fixed drop handler currying, removed dead listId prop

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use Surface component on interview finished page
- Add 'use no memo' to ProtocolScreen for react compiler compat
- Fix db-fixture cleanup to handle page crashes during tests
- Remove post-restore navigation that caused deadlocks
- Use page.request.get for onboard tests to avoid navigation side effects
- Add deleteUser helper for test retry resilience (User table excluded
  from snapshots)
- Replace waitForTimeout with proper element visibility assertions
- Wait for table update instead of dialog close animation in participants
- Reload page after toggling previewMode so auth toggle is enabled
The native addon fails to build in the Docker e2e container (Node 24
has no prebuilt binaries and the image lacks gcc). msgpackr falls back
to pure JS without it.
- Update createInterview test to mock safeRevalidateTag (replaced
  safeUpdateTag after switching to route handler cache invalidation)
- Remove obsolete cache-collision test (unstable_cache replaced by
  'use cache' directive)
- Add tailwind-inset-surface plugin to knip ignore list (loaded via
  @plugin in CSS, invisible to knip)
Replace missing Progress component with ProgressBar, remove unused
@radix-ui/react-progress dependency, fix unused onScroll vars, and
simplify Tailwind translate classes.
…e-ui/react to 1.2.0

- Convert GenerateInterviewURLs and GenerateParticipantURLs from Dialog to
  Popover pattern, replacing error dialogs with toast notifications
- Upgrade @base-ui/react from 1.1.0 to 1.2.0 and remove the CompositeList
  Strict Mode patch (no longer needed with React 19)
- Add e2e tests for both export URL popovers
@github-actions
Copy link

jthrilly and others added 11 commits February 13, 2026 09:42
Move overflow-y and scrollbar-gutter: stable from body/html to the
.root div so Floating UI viewport calculations are unaffected by the
gutter space. Also clean up popover styles.
Inset the fade pseudo-elements by the scrollbar width so they
don't cover classic (non-overlay) scrollbars.
setup-database.ts had a default `return false` that silently skipped
migrations when prisma migrate diff exited with an unexpected code.
Now throws on any non-0/2 exit code and logs stdout/stderr/exit code.

Changed netlify deploy redirect from `>` to `| tee` so build output
is visible in GitHub Actions logs.
Replace the pull_request trigger with workflow_dispatch so e2e tests
can be run on-demand from the Actions tab. Add a resolve-pr job that
looks up the PR number from the branch name for manual runs, so the
failure report deployment and PR commenting still work.
netlify deploy --build --json swallows all build subprocess output,
making it impossible to see setup-database.ts logs. Run the database
scripts as a dedicated step so output is visible in GH Actions. The
netlify build re-runs them but they no-op since migrations are
already applied.
netlify deploy --build --json swallows all build subprocess stdout,
hiding setup-database.ts logs and any next build errors. Split into
netlify build (stdout visible in GH Actions) + netlify deploy (just
uploads artifacts).
@github-actions
Copy link

@github-actions
Copy link

eslint-plugin-react does not yet support ESLint 10.
See: jsx-eslint/eslint-plugin-react#3977
@github-actions
Copy link

pull_request workflows dont run when PRs have merge conflicts bc Github can't create the temporary merge commit. switch to push trigger, and resolve pr number with gh pr list
@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