Vendored Hunspell en.aff/en.dic into web/public/dictionaries/en/ (served as a static asset + embedded in the binary, kept out of the JS bundle). dictionary-en moved to a devDep — only used to source the files. - useSpellChecker (App-level, loads once/session): fetches the dict, builds an nspell instance, replays a localStorage personal word list; addWord persists and bumps a version so consumers re-decorate. Ambient types in src/types/nspell.d.ts (the package ships none). - SpellCheck Tiptap extension: misspellings as ProseMirror decorations (no stored marks), recomputed on edit / caret move / checker swap. Latin-only tokenizer so CJK is never flagged; skips short tokens + all-caps acronyms; exempts the caret word to avoid mid-typing jitter. Reuses mapOffset (now exported from SuggestionHighlight); wordAt resolves the exact span on click. - MisspellCard: soft rose wavy underline, bilingual popover with up to 5 nspell corrections (click to replace) + add-to-dictionary. Closes on outside-pointer, edit, or doc switch. Chinese spell check intentionally omitted — nspell is dictionary-based and English-only; Chinese typos (homophone 别字) need an LLM, out of v1 scope. tsc/vite/go build+vet clean; live server serves both dict files; nspell behavior smoke-tested. Claude-Session: https://claude.ai/code/session_016Yr6jELuRc7hyzYLccQKZd
35 lines
887 B
JSON
35 lines
887 B
JSON
{
|
|
"name": "petal-web",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@tiptap/extension-character-count": "^2.11.5",
|
|
"@tiptap/extension-placeholder": "^2.11.5",
|
|
"@tiptap/extension-text-align": "^2.11.5",
|
|
"@tiptap/extension-underline": "^2.11.5",
|
|
"@tiptap/pm": "^2.11.5",
|
|
"@tiptap/react": "^2.11.5",
|
|
"@tiptap/starter-kit": "^2.11.5",
|
|
"lottie-web": "^5.13.0",
|
|
"nspell": "^2.1.5",
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/vite": "^4.0.0",
|
|
"@types/react": "^19.1.0",
|
|
"@types/react-dom": "^19.1.0",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"dictionary-en": "^4.0.0",
|
|
"tailwindcss": "^4.0.0",
|
|
"typescript": "^5.7.3",
|
|
"vite": "^6.1.0"
|
|
}
|
|
}
|