{ "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" }}
{
"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"
}
}