update all the javascripts to node26 and beyond!#90
Open
wrigjl wants to merge 13 commits into
Open
Conversation
- next 12 → 16.2.6 (Turbopack now default, removed webpack config shim) - react / react-dom 18.3.1 → 19.2.6 - @mui/material / icons-material 5.8 → 9.0.1 - @emotion/react 11.9 → 11.14, @emotion/styled 11.8 → 11.14 - eslint 8 → 10.4, eslint-config-next matches next version - jest 28 → 30.4.2 - react-bootstrap 2.4 → 2.10.10 - d3-graphviz 4 → 5.6, dotenv 16 → 17, @fontsource/roboto 4 → 5 - bootstrap 5.1 → 5.3.8, node-tikzjax 1.0.3 → 1.0.5 - Fix: ErrorOutline → ErrorOutlined (MUI v9 icon rename) - Fix: all useEffect missing-dependency warnings resolved - Fix: next.config.js outputStandalone → output: standalone - Fix: ISU logo alt text added - Fix: browserslist db updated - Add .nvmrc (26) and engines field Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…verlays
Root cause: VisualizeRowReact passed overlay={<></>} (empty Fragment) to
OverlayTrigger when isDisabled was false. react-bootstrap's Overlay then
called React.cloneElement(<Fragment>, { style: ... }), which React 19 now
validates and warns on ('React.Fragment can only have key and children props').
Fix 1 (root cause): Replace OverlayTrigger + conditional Popover/<> in
VisualizeRowReact with MUI Tooltip - simpler API, no cloneElement on Fragment.
Fix 2 (belt-and-suspenders): Rewrite PopoverTooltipClick entirely using
MUI Popover + anchorEl state instead of react-bootstrap OverlayTrigger +
Popover. This removes the entire react-bootstrap overlay rendering chain
from that component, which had its own potential React 19 compat issues.
No callers changed - same toolTip prop API throughout.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MUI v9 removed the InputProps prop from TextField (moved to slotProps.input).
When Autocomplete spreads its renderInput params (which include InputProps),
TextField no longer consumed it, causing it to fall through to a DOM element.
Migration:
- Destructure InputProps out of renderInput params before spreading
- Move it to slotProps={{ input: { ...InputProps, ...conditionalStyle } }}
This eliminates the 'React does not recognize the InputProps prop on a DOM
element' console warning.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MUI v6+ removed shorthand system props on Box (display=, justifyContent=,
alignItems=, minHeight= as direct JSX attributes). These fell through to the
underlying <div>, causing 'React does not recognize the X prop on a DOM
element' warnings.
MUI v6+ renamed PaperComponent on Autocomplete to slots.paper.
Changes:
- pages/index.js: <Box display= justifyContent= alignItems= minHeight=>
→ <Box sx={{ display, justifyContent, alignItems, minHeight }}>
- SearchBarExtensible.js: PaperComponent={fn} → slots={{ paper: fn }}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
In MUI v9, Autocomplete stopped passing InputProps/inputProps to renderInput.
It now passes a pre-built slotProps object:
slotProps: {
inputLabel: ...,
input: { ref, className, endAdornment, ... },
htmlInput: { value, onChange, ... } ← controlled value lives here
}
The previous fix (slotProps={{ input: { ...InputProps } }}) completely
overrode the Autocomplete's slotProps from {...params}, wiping out
slotProps.htmlInput — the source of the native input's value/onChange.
This caused the 'controlled to uncontrolled' warning.
Fix: destructure slotProps from params, spread the whole acSlots object
(preserving htmlInput and inputLabel), and only surgically merge into
slotProps.input for our optional font-size override.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Regenerated lockfile reflecting the full package upgrade committed in 'upgrade all packages to latest; target Node 26'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MUI v9 Stack no longer recognizes alignItems as a direct prop (only direction, spacing, divider, useFlexGap are explicit). Passing it directly caused 'React does not recognize the alignItems prop on a DOM element'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
eslint-plugin-import, eslint-plugin-jsx-a11y, and eslint-plugin-react (all pulled in by eslint-config-next) declare peer deps capped at ^9, not ^10. eslint@10.x caused ERESOLVE overriding warnings on every npm install. Pinning to ^9 satisfies all three plugins while still meeting eslint-config-next's >=9.0.0 requirement. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The two test files (apicalls.test.js, problemrowcalls.test.js) were placeholder stubs with no real tests. Removing jest eliminates 223 transitive packages including the inflight@1.0.6 deprecation warning that had no upstream fix available. Also removes the tests/api-tests/ directory. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sets NEXT_TELEMETRY_DISABLED=1 on dev, build, and start so telemetry is never sent regardless of local next telemetry config. Inline env var in scripts is the reliable committed approach since .env* is gitignored in this repo. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
The target javascript engine on portneuf was last updated in 2023 (node 19). I'd like to get us up to Node 26 (the current long term support version). This required a bunch of package updates, too (next, react, etc.).
I've debugged what I can, but I can't say I was exhaustive (quantum visualization seems to still work as does CLIQUE).
There are still some package vulnerabilities that need to be addressed, but this is a giant leap towards goodness.
This change requires coordination for production and the bleeding edge server.