PR #182 review (post-fix pass) surfaced two latent correctness risks in the new MessageItem memo: the per-message signature tracks only [type, text length, state, error/output presence] + metadata, so a part kind whose VISIBLE content can change WITHOUT changing those fields would silently freeze a stale row. Neither is reachable with the current toolset (tool output is set once; streaming is append-only with a fixed id), so the correct fix is to harden the documented invariant rather than hash output content on every delta (getPage returns full page content — hashing it per-delta would tax the hot path this PR optimizes). Add a WARNING in messageSignature naming the two future triggers (a tool that streams `preliminary` output; a client-side regenerate/edit that mutates a finalized row in place) and the required action (extend the signature). No behavior change (comment only). vitest src/features/ai-chat 189/189 pass, tsc clean for the touched files. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
React + TypeScript + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
Expanding the ESLint configuration
If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
- Configure the top-level
parserOptionsproperty like this:
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
- Replace
plugin:@typescript-eslint/recommendedtoplugin:@typescript-eslint/recommended-type-checkedorplugin:@typescript-eslint/strict-type-checked - Optionally add
plugin:@typescript-eslint/stylistic-type-checked - Install eslint-plugin-react and add
plugin:react/recommended&plugin:react/jsx-runtimeto theextendslist