{ "name": "research-writer", "private": true, "version": "0.15.5", "license": "Apache-2.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc && tsc -p tsconfig.node.json --noEmit && vite build && node scripts/check-webkit-compat.mjs && node scripts/app-size-report.mjs --check && pnpm size:test", "i18n:extract": "lingui extract --clean", "i18n:compile": "lingui compile --strict", "i18n:guard": "node scripts/check-i18n-coverage.mjs", "i18n:check": "pnpm i18n:extract && git diff --exit-code -- src/locales && pnpm i18n:compile && pnpm i18n:guard", "prepare:synara": "node scripts/prepare-synara-sidecar.mjs", "prepare:synara:dev": "node scripts/prepare-synara-sidecar.mjs --allow-dirty", "prepare:presentation": "node scripts/prepare-presentation-runtime.mjs", "prepare:runtime": "pnpm prepare:synara && pnpm prepare:presentation", "prepare:runtime:dev": "pnpm prepare:synara:dev && pnpm prepare:presentation", "prepare:build": "node scripts/prepare-build.mjs", "check": "mise run check", "lint": "node scripts/check-use-state-allowlist.mjs && node scripts/lint.mjs --max-warnings 12 src tools scripts", "knip": "knip", "test": "vitest run", "test:invariants": "node scripts/test-invariants.mjs", "gate:changed": "node scripts/gate-changed.mjs", "test:e2e-harness": "LATTICE_E2E=1 vitest run scripts/perf-bench/smoke.test.mjs", "tauri": "tauri", "build:beta": "LATTICE_FLAVOR=beta tauri build --config src-tauri/tauri.beta.conf.json", "verify:overleaf": "node scripts/verify-overleaf.mjs", "eval:agent": "node scripts/agent-quality-eval.mjs", "size:report": "node scripts/app-size-report.mjs", "size:test": "node scripts/app-size-report-selftest.mjs", "perf:bench": "node scripts/perf-bench.mjs", "perf:evidence": "node scripts/check-perf-evidence.mjs", "notices": "node scripts/generate-notices.mjs", "notices:check": "node scripts/generate-notices.mjs --check --allow-unresolved", "prepare": "husky" }, "dependencies": { "@base-ui/react": "^1.6.0", "@codemirror/autocomplete": "^6.20.3", "@codemirror/commands": "^6.10.4", "@codemirror/lang-html": "^6.4.12", "@codemirror/lang-markdown": "^6.5.2", "@codemirror/language": "^6.12.4", "@codemirror/language-data": "^6.5.2", "@codemirror/legacy-modes": "^6.5.3", "@codemirror/lint": "^6.9.7", "@codemirror/search": "^6.7.1", "@codemirror/state": "^6.7.1", "@codemirror/view": "^6.43.8", "@danfessler/trellis": "0.2.0", "@danfessler/trellis-react": "0.2.0", "@floating-ui/dom": "^1.8.0", "@fontsource-variable/inter": "^5.3.0", "@fontsource/instrument-serif": "^5.3.0", "@lezer/highlight": "^1.2.3", "@lingui/core": "^6.6.0", "@lingui/react": "^6.6.0", "@panzoom/panzoom": "^4.6.2", "@pdfslick/core": "4.0.2", "@pierre/diffs": "^1.5.2", "@pierre/trees": "1.0.0-beta.6", "@radix-ui/react-focus-scope": "^1.1.14", "@replit/codemirror-emacs": "^6.1.0", "@replit/codemirror-vim": "^6.4.0", "@shikijs/langs": "4.4.3", "@shikijs/themes": "4.4.3", "@tailwindcss/vite": "^4.3.3", "@tauri-apps/api": "^2", "@tauri-apps/plugin-clipboard-manager": "^2.3.2", "@tauri-apps/plugin-dialog": "^2.7.2", "@tauri-apps/plugin-log": "^2", "@tauri-apps/plugin-opener": "^2", "@tauri-apps/plugin-process": "^2", "@tauri-apps/plugin-updater": "^2", "@tiptap/core": "3.33.0", "@tiptap/extension-bold": "3.33.0", "@tiptap/extension-code": "3.33.0", "@tiptap/extension-code-block": "3.33.0", "@tiptap/extension-hard-break": "3.33.0", "@tiptap/extension-heading": "3.33.0", "@tiptap/extension-highlight": "3.33.0", "@tiptap/extension-horizontal-rule": "3.33.0", "@tiptap/extension-image": "3.33.0", "@tiptap/extension-italic": "3.33.0", "@tiptap/extension-link": "3.33.0", "@tiptap/extension-list": "3.33.0", "@tiptap/extension-strike": "3.33.0", "@tiptap/extension-table": "3.33.0", "@tiptap/extension-underline": "3.33.0", "@tiptap/pm": "3.33.0", "@tiptap/react": "3.33.0", "@tiptap/starter-kit": "3.33.0", "@tiptap/suggestion": "3.33.0", "@tldraw/assets": "5.2.5", "@univerjs/core": "0.25.1", "@univerjs/engine-render": "0.25.1", "@univerjs/preset-sheets-core": "0.25.1", "@univerjs/ui": "0.25.1", "@xterm/addon-fit": "0.11.0", "@xterm/addon-search": "0.16.0", "@xterm/addon-unicode11": "0.9.0", "@xterm/addon-web-links": "0.12.0", "@xterm/addon-webgl": "0.19.0", "@xterm/xterm": "6.0.0", "clsx": "^2.1.1", "codemirror-lang-bib": "^0.2.4", "cuelume": "^0.2.2", "decode-named-character-reference": "^1.3.0", "exceljs": "4.4.0", "frimousse": "^0.3.0", "highlight.js": "^11.11.1", "katex": "0.19.0", "lowlight": "^3.3.0", "lucide-react": "^1.24.0", "mdast-util-from-markdown": "^2.0.3", "mdast-util-to-markdown": "^2.1.2", "micromark-util-decode-numeric-character-reference": "^2.0.2", "micromark-util-types": "^2.0.2", "motion": "^12.42.2", "opentype.js": "2.0.0", "pdfjs-dist": "6.5.438", "pele": "^1.6.0", "radix-ui": "^1.6.5", "react": "^19.1.0", "react-dom": "^19.1.0", "react-medium-image-zoom": "5.4.3", "remark-gfm": "^4.0.1", "remark-math": "^6.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "rxjs": "7.8.2", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "tldraw": "5.2.5", "unified": "^11.0.5", "yaml": "^2.9.0", "yjs": "^13.6.32", "zustand": "5.0.15" }, "devDependencies": { "@babel/core": "^7.29.0", "@lingui/babel-plugin-lingui-macro": "^6.6.0", "@lingui/cli": "^6.6.0", "@lingui/format-po": "6.6.0", "@lingui/vite-plugin": "^6.6.0", "@rolldown/plugin-babel": "^0.2.3", "@tauri-apps/cli": "^2", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.2", "@tiptap/extension-document": "3.33.0", "@tiptap/extension-paragraph": "3.33.0", "@tiptap/extension-text": "3.33.0", "@types/babel__core": "^7.20.5", "@types/mdast": "^4.0.4", "@types/react": "^19.1.8", "@types/react-dom": "^19.1.6", "@vitejs/plugin-react": "^6.0.5", "babel-plugin-react-compiler": "^1.0.0", "bun": "1.4.4", "eslint-plugin-lingui": "^0.14.0", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-react-refresh": "^0.5.4", "fast-check": "^4.9.0", "husky": "9.1.7", "jsdom": "^30.0.1", "knip": "^6.32.2", "linguist-languages": "9.5.0", "lint-staged": "17.6.0", "oxlint": "1.87.0", "playwright-core": "1.63.0", "typescript": "~5.8.3", "vite": "^8.2.1", "vitest": "^4.1.10" }, "pnpm": { "onlyBuiltDependencies": [ "bun" ], "overrides": { "@tiptap/extension-bubble-menu": "3.33.0", "@tiptap/extension-bullet-list": "3.33.0", "@tiptap/extension-collaboration": "3.33.0", "@tiptap/extension-dropcursor": "3.33.0", "@tiptap/extension-floating-menu": "3.33.0", "@tiptap/extension-gapcursor": "3.33.0", "@tiptap/extension-list-item": "3.33.0", "@tiptap/extension-list-keymap": "3.33.0", "@tiptap/extension-node-range": "3.33.0", "@tiptap/extension-ordered-list": "3.33.0", "@tiptap/extensions": "3.33.0", "exceljs>unzipper": "^0.12.3", "micromark-extension-math>katex": "0.19.0" }, "patchedDependencies": { "@pierre/trees@1.0.0-beta.6": "patches/@pierre__trees@1.0.0-beta.6.patch", "@danfessler/trellis@0.2.0": "patches/@danfessler__trellis@0.2.0.patch", "@pdfslick/core@4.0.2": "patches/@pdfslick__core@4.0.2.patch", "pdfjs-dist@6.5.438": "patches/pdfjs-dist@6.5.438.patch", "@tiptap/react@3.33.0": "patches/@tiptap__react@3.33.0.patch", "prosemirror-view@1.42.6": "patches/prosemirror-view@1.42.6.patch" } }, "lint-staged": { "*": "node scripts/check-file-size.mjs", ".oxlintrc.json": "node scripts/check-use-state-allowlist.mjs" } }