Skip to content

Commit f88eb4b

Browse files
jdpigeonclaude
andcommitted
Update learnings.md with modernization insights
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 300ee3a commit f88eb4b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

.llms/learnings.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,42 @@ Format: brief heading + explanation + (optional) relevant file paths.
88
---
99

1010
<!-- Add entries below this line -->
11+
12+
## React Router v6 + redux connect + class components: TypeScript inference gap
13+
14+
`withRouter<P>(Component: ComponentType<P & WithRouterProps>): ComponentType<P>`
15+
works at runtime but TypeScript cannot infer `P` when the argument is a
16+
`ConnectedComponent` (react-redux). Pragmatic solution: cast in `routes.tsx` with
17+
a comment; or fully convert the class component to a functional component using
18+
`useNavigate()` directly. See `src/renderer/utils/withRouter.tsx` and `routes.tsx`.
19+
20+
## connected-react-router → RouteChanged action pattern
21+
22+
Instead of listening to `@@router/LOCATION_CHANGE` in epics, dispatch
23+
`ExperimentActions.RouteChanged(pathname)` from a `RouteChangeTracker`
24+
component (uses `useLocation`). Epics then filter on this action. See
25+
`src/renderer/epics/experimentEpics.ts` and
26+
`src/renderer/components/RouteChangeTracker.tsx`.
27+
28+
## Tailwind v4 setup
29+
30+
Tailwind v4 uses `@tailwindcss/vite` plugin (no `tailwind.config.js`, no PostCSS
31+
config). Add the plugin to the `renderer` section of `vite.config.ts` and
32+
`@import 'tailwindcss'` at the top of the main CSS file.
33+
34+
## Shadcn/ui components live in src/renderer/components/ui/
35+
36+
Button, Card, Dialog — plus the `cn()` utility at `src/renderer/utils/cn.ts`.
37+
Use these instead of Semantic UI equivalents.
38+
39+
## Pyodide v0.27.0 URL format change
40+
41+
v0.21.0 archive: `pyodide-build-{version}.tar.bz2`
42+
v0.27.0+ archive: `pyodide-{version}.tar.bz2` (no "build-" prefix).
43+
`InstallPyodide.js` must be updated accordingly when changing versions.
44+
45+
## sns.tsplot removed in Seaborn 0.10
46+
47+
`plot_conditions()` in `utils.py` used `sns.tsplot` which was removed in
48+
Seaborn 0.10. Replaced with `plt.plot` + `fill_between` for mean ± SEM.
49+
Seaborn is not imported at all now — matplotlib only for this function.

0 commit comments

Comments
 (0)