@beyondwork/docx-react-component 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (704) hide show
  1. package/dist/chunk-32W6IVQE.js +7725 -0
  2. package/dist/chunk-32W6IVQE.js.map +1 -0
  3. package/dist/index.cjs +23722 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +7 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.js +16011 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/public-types-DqCURAz8.d.cts +1152 -0
  10. package/dist/public-types-DqCURAz8.d.ts +1152 -0
  11. package/dist/tailwind.cjs +8295 -0
  12. package/dist/tailwind.cjs.map +1 -0
  13. package/dist/tailwind.d.cts +323 -0
  14. package/dist/tailwind.d.ts +323 -0
  15. package/dist/tailwind.js +553 -0
  16. package/dist/tailwind.js.map +1 -0
  17. package/package.json +52 -31
  18. package/.codex/config.toml +0 -5
  19. package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
  20. package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
  21. package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
  22. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
  23. package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
  24. package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
  25. package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
  26. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
  27. package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
  28. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
  29. package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
  30. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +0 -31
  31. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
  32. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
  33. package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
  34. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
  35. package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
  36. package/.corepack/v1/pnpm/10.30.3/dist/worker.js +0 -10119
  37. package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
  38. package/.cursor/mcp.json +0 -7
  39. package/.github/workflows/ci.yml +0 -35
  40. package/.mcp.json +0 -7
  41. package/.openclaw/workspace-state.json +0 -4
  42. package/.pnpmrc.json +0 -1
  43. package/.wave-launch.sh +0 -7
  44. package/.workspace-marker +0 -1
  45. package/AGENTS.md +0 -78
  46. package/CHANGELOG.md +0 -177
  47. package/DESIGN.md +0 -929
  48. package/HEARTBEAT.md +0 -7
  49. package/IDENTITY.md +0 -23
  50. package/SOUL.md +0 -36
  51. package/TOOLS.md +0 -40
  52. package/USER.md +0 -17
  53. package/docs/README.md +0 -107
  54. package/docs/agents/wave-cont-eval-role.md +0 -36
  55. package/docs/agents/wave-cont-qa-role.md +0 -52
  56. package/docs/agents/wave-deploy-verifier-role.md +0 -34
  57. package/docs/agents/wave-design-role.md +0 -47
  58. package/docs/agents/wave-documentation-role.md +0 -34
  59. package/docs/agents/wave-infra-role.md +0 -34
  60. package/docs/agents/wave-integration-role.md +0 -37
  61. package/docs/agents/wave-launcher-role.md +0 -41
  62. package/docs/agents/wave-orchestrator-role.md +0 -52
  63. package/docs/agents/wave-planner-role.md +0 -39
  64. package/docs/agents/wave-security-role.md +0 -40
  65. package/docs/architecture/docx/README.md +0 -10
  66. package/docs/architecture/future/README.md +0 -8
  67. package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
  68. package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
  69. package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
  70. package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
  71. package/docs/comment-redline-overview.md +0 -350
  72. package/docs/concepts/context7-vs-skills.md +0 -118
  73. package/docs/concepts/operating-modes.md +0 -91
  74. package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
  75. package/docs/concepts/what-is-a-wave.md +0 -217
  76. package/docs/context7/bundles.json +0 -222
  77. package/docs/context7/planner-agent/README.md +0 -28
  78. package/docs/context7/planner-agent/manifest.json +0 -83
  79. package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
  80. package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
  81. package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
  82. package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
  83. package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
  84. package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
  85. package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
  86. package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
  87. package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
  88. package/docs/evals/arm-templates/README.md +0 -13
  89. package/docs/evals/arm-templates/full-wave.json +0 -15
  90. package/docs/evals/arm-templates/single-agent.json +0 -15
  91. package/docs/evals/benchmark-catalog.json +0 -670
  92. package/docs/evals/cases/README.md +0 -47
  93. package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
  94. package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
  95. package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
  96. package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
  97. package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
  98. package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
  99. package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
  100. package/docs/evals/external-benchmarks.json +0 -85
  101. package/docs/evals/external-command-config.sample.json +0 -9
  102. package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
  103. package/docs/evals/pilots/README.md +0 -47
  104. package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
  105. package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
  106. package/docs/evals/wave-benchmark-program.md +0 -302
  107. package/docs/guides/planner.md +0 -220
  108. package/docs/guides/recommendations-0.8.9.md +0 -133
  109. package/docs/guides/signal-wrappers.md +0 -165
  110. package/docs/guides/terminal-surfaces.md +0 -96
  111. package/docs/image copy.png +0 -0
  112. package/docs/image.png +0 -0
  113. package/docs/images/image.png +0 -0
  114. package/docs/legal-feedback-architecture.md +0 -498
  115. package/docs/plans/component-cutover-matrix.json +0 -1072
  116. package/docs/plans/component-cutover-matrix.md +0 -307
  117. package/docs/plans/context7-wave-orchestrator.md +0 -155
  118. package/docs/plans/current-state.md +0 -198
  119. package/docs/plans/docx/README.md +0 -9
  120. package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
  121. package/docs/plans/examples/wave-example-live-proof.md +0 -435
  122. package/docs/plans/master-plan.md +0 -224
  123. package/docs/plans/migration.md +0 -538
  124. package/docs/plans/operations/README.md +0 -7
  125. package/docs/plans/operations/wave-10-word-certification.md +0 -87
  126. package/docs/plans/operations/wave-8-railway-staging.md +0 -153
  127. package/docs/plans/operations/wave-9-manual-certification.md +0 -73
  128. package/docs/plans/platform/README.md +0 -9
  129. package/docs/plans/reference/legal-checklist-coverage.md +0 -258
  130. package/docs/plans/wave-orchestrator.md +0 -423
  131. package/docs/plans/waves/README.md +0 -75
  132. package/docs/plans/waves/completed/wave-0.md +0 -195
  133. package/docs/plans/waves/completed/wave-1.md +0 -379
  134. package/docs/plans/waves/completed/wave-10.md +0 -670
  135. package/docs/plans/waves/completed/wave-11.md +0 -335
  136. package/docs/plans/waves/completed/wave-12.md +0 -417
  137. package/docs/plans/waves/completed/wave-13.md +0 -316
  138. package/docs/plans/waves/completed/wave-14.md +0 -319
  139. package/docs/plans/waves/completed/wave-15.md +0 -321
  140. package/docs/plans/waves/completed/wave-16.md +0 -316
  141. package/docs/plans/waves/completed/wave-17.md +0 -331
  142. package/docs/plans/waves/completed/wave-18.md +0 -328
  143. package/docs/plans/waves/completed/wave-2.md +0 -438
  144. package/docs/plans/waves/completed/wave-3.md +0 -435
  145. package/docs/plans/waves/completed/wave-4.md +0 -430
  146. package/docs/plans/waves/completed/wave-5.md +0 -430
  147. package/docs/plans/waves/completed/wave-6.md +0 -430
  148. package/docs/plans/waves/completed/wave-7.md +0 -526
  149. package/docs/plans/waves/completed/wave-8.md +0 -596
  150. package/docs/plans/waves/completed/wave-9.md +0 -552
  151. package/docs/plans/waves/deferred/README.md +0 -14
  152. package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
  153. package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
  154. package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
  155. package/docs/plans/waves/design/README.md +0 -5
  156. package/docs/plans/waves/design/wave-1-a1.md +0 -309
  157. package/docs/plans/waves/reviews/README.md +0 -5
  158. package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
  159. package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
  160. package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
  161. package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
  162. package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
  163. package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
  164. package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
  165. package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
  166. package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
  167. package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
  168. package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
  169. package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
  170. package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
  171. package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
  172. package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
  173. package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
  174. package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
  175. package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
  176. package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
  177. package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
  178. package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
  179. package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
  180. package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
  181. package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
  182. package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
  183. package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
  184. package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
  185. package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
  186. package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
  187. package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
  188. package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
  189. package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
  190. package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
  191. package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
  192. package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
  193. package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
  194. package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
  195. package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
  196. package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
  197. package/docs/plans/waves/reviews/wave-8-security.md +0 -47
  198. package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
  199. package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
  200. package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
  201. package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
  202. package/docs/plans/waves/specs/README.md +0 -5
  203. package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
  204. package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
  205. package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
  206. package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
  207. package/docs/plans/waves/wave-19.md +0 -341
  208. package/docs/plans/waves/wave-20.md +0 -308
  209. package/docs/plans/waves/wave-21.md +0 -289
  210. package/docs/plans/waves/wave-22.md +0 -221
  211. package/docs/plans/waves/wave-23.md +0 -295
  212. package/docs/plans/waves/wave-24.md +0 -286
  213. package/docs/plans/waves/wave-25.md +0 -313
  214. package/docs/plans/waves/wave-26.md +0 -300
  215. package/docs/plans/waves/wave-27.md +0 -299
  216. package/docs/plans/waves/wave-28.md +0 -368
  217. package/docs/plans/waves/wave-29.md +0 -303
  218. package/docs/plans/waves/wave-30.md +0 -307
  219. package/docs/plans/waves/wave-31.md +0 -231
  220. package/docs/plans/waves/wave-32.md +0 -152
  221. package/docs/plans/waves/wave-33.md +0 -147
  222. package/docs/plans/waves/wave-34.md +0 -148
  223. package/docs/plans/waves/wave-35.md +0 -141
  224. package/docs/plans/waves/wave-36.md +0 -146
  225. package/docs/plans/xlsx/README.md +0 -14
  226. package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
  227. package/docs/reference/cli-reference.md +0 -600
  228. package/docs/reference/coordination-and-closure.md +0 -487
  229. package/docs/reference/deep-research-report (15).md +0 -25
  230. package/docs/reference/docx/README.md +0 -10
  231. package/docs/reference/legal-checklist.md +0 -445
  232. package/docs/reference/live-proof-waves.md +0 -199
  233. package/docs/reference/ooxml-compliance.md +0 -129
  234. package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
  235. package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
  236. package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
  237. package/docs/reference/public-api.md +0 -456
  238. package/docs/reference/repository-guidance.md +0 -58
  239. package/docs/reference/runtime-config/README.md +0 -182
  240. package/docs/reference/runtime-config/claude.md +0 -110
  241. package/docs/reference/runtime-config/codex.md +0 -82
  242. package/docs/reference/runtime-config/opencode.md +0 -93
  243. package/docs/reference/sample-waves.md +0 -105
  244. package/docs/reference/skills.md +0 -237
  245. package/docs/reference/templates/AGENTS.md +0 -78
  246. package/docs/reference/templates/HEARTBEAT.md +0 -7
  247. package/docs/reference/templates/IDENTITY.md +0 -23
  248. package/docs/reference/templates/SOUL.md +0 -36
  249. package/docs/reference/templates/TOOLS.md +0 -40
  250. package/docs/reference/templates/USER.md +0 -17
  251. package/docs/reference/wave-control.md +0 -184
  252. package/docs/reference/wave-planning-lessons.md +0 -167
  253. package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
  254. package/docs/reference/word-review-editor-ux-guide.md +0 -253
  255. package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
  256. package/docs/research/agent-context-sources.md +0 -178
  257. package/docs/research/coordination-failure-review.md +0 -290
  258. package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
  259. package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
  260. package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
  261. package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
  262. package/docs/research/xlsx/raw/README.md +0 -13
  263. package/docs/roadmap.md +0 -174
  264. package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
  265. package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
  266. package/docs/xlsx-react/README.md +0 -38
  267. package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
  268. package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
  269. package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
  270. package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
  271. package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
  272. package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
  273. package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
  274. package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
  275. package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
  276. package/examples/README.md +0 -16
  277. package/memory/MEMORY.md +0 -24
  278. package/pnpm-workspace.yaml +0 -4
  279. package/scripts/check-no-authored-js.sh +0 -13
  280. package/scripts/context7-api-check.sh +0 -65
  281. package/scripts/context7-export-env.sh +0 -42
  282. package/scripts/run-context7-mcp.sh +0 -8
  283. package/scripts/run-workspace-tests.sh +0 -15
  284. package/scripts/start-wave-10-local.sh +0 -189
  285. package/scripts/wave-agent-attach.sh +0 -47
  286. package/scripts/wave-auto-answer.sh +0 -118
  287. package/scripts/wave-dashboard-attach.sh +0 -13
  288. package/scripts/wave-launch.sh +0 -273
  289. package/scripts/wave-overnight-supervisor.sh +0 -145
  290. package/scripts/wave-status.sh +0 -379
  291. package/scripts/wave-watch.sh +0 -231
  292. package/services/README.md +0 -17
  293. package/services/openxml-validator/Dockerfile +0 -29
  294. package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
  295. package/services/openxml-validator/Program.cs +0 -436
  296. package/services/openxml-validator/README.md +0 -152
  297. package/services/openxml-validator/railway.json +0 -16
  298. package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
  299. package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
  300. package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
  301. package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
  302. package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
  303. package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
  304. package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
  305. package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
  306. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
  307. package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
  308. package/services/react-word-editor/Dockerfile +0 -26
  309. package/services/react-word-editor/README.md +0 -254
  310. package/services/react-word-editor/app/api/certification/route.ts +0 -79
  311. package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
  312. package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
  313. package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
  314. package/services/react-word-editor/app/api/exports/route.ts +0 -81
  315. package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
  316. package/services/react-word-editor/app/api/health/route.ts +0 -70
  317. package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
  318. package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
  319. package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
  320. package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
  321. package/services/react-word-editor/app/api/uploads/route.ts +0 -70
  322. package/services/react-word-editor/app/api/validate/route.ts +0 -310
  323. package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
  324. package/services/react-word-editor/app/certification/page.tsx +0 -32
  325. package/services/react-word-editor/app/dashboard/page.tsx +0 -7
  326. package/services/react-word-editor/app/demo/page.tsx +0 -30
  327. package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
  328. package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
  329. package/services/react-word-editor/app/fixtures/page.tsx +0 -7
  330. package/services/react-word-editor/app/globals.css +0 -121
  331. package/services/react-word-editor/app/layout.tsx +0 -32
  332. package/services/react-word-editor/app/page.tsx +0 -30
  333. package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
  334. package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
  335. package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
  336. package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
  337. package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
  338. package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
  339. package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
  340. package/services/react-word-editor/lib/certification-bundle.ts +0 -796
  341. package/services/react-word-editor/lib/certification-store.ts +0 -661
  342. package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
  343. package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
  344. package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
  345. package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
  346. package/services/react-word-editor/lib/editor-session.ts +0 -228
  347. package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
  348. package/services/react-word-editor/lib/harness-client.ts +0 -347
  349. package/services/react-word-editor/lib/harness-config.json +0 -30
  350. package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
  351. package/services/react-word-editor/lib/harness-config.ts +0 -21
  352. package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
  353. package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
  354. package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
  355. package/services/react-word-editor/lib/private-mode.ts +0 -61
  356. package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
  357. package/services/react-word-editor/lib/regression-report.ts +0 -896
  358. package/services/react-word-editor/lib/run-artifacts.ts +0 -934
  359. package/services/react-word-editor/lib/run-history.ts +0 -755
  360. package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
  361. package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
  362. package/services/react-word-editor/lib/storage.ts +0 -953
  363. package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
  364. package/services/react-word-editor/lib/validator-client.ts +0 -95
  365. package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
  366. package/services/react-word-editor/middleware.ts +0 -35
  367. package/services/react-word-editor/next-env.d.ts +0 -6
  368. package/services/react-word-editor/next.config.mjs +0 -15
  369. package/services/react-word-editor/package.json +0 -38
  370. package/services/react-word-editor/postcss.config.mjs +0 -8
  371. package/services/react-word-editor/railway.json +0 -21
  372. package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
  373. package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
  374. package/services/react-word-editor/tsconfig.json +0 -39
  375. package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
  376. package/skills/README.md +0 -48
  377. package/skills/domain-docx-compatibility/SKILL.md +0 -44
  378. package/skills/domain-docx-compatibility/skill.json +0 -19
  379. package/skills/domain-editor-architecture/SKILL.md +0 -49
  380. package/skills/domain-editor-architecture/skill.json +0 -19
  381. package/skills/domain-legal-review/SKILL.md +0 -39
  382. package/skills/domain-legal-review/skill.json +0 -19
  383. package/skills/provider-aws/SKILL.md +0 -117
  384. package/skills/provider-aws/adapters/claude.md +0 -1
  385. package/skills/provider-aws/adapters/codex.md +0 -1
  386. package/skills/provider-aws/references/service-verification.md +0 -39
  387. package/skills/provider-aws/skill.json +0 -54
  388. package/skills/provider-custom-deploy/SKILL.md +0 -64
  389. package/skills/provider-custom-deploy/skill.json +0 -50
  390. package/skills/provider-docker-compose/SKILL.md +0 -96
  391. package/skills/provider-docker-compose/adapters/local.md +0 -1
  392. package/skills/provider-docker-compose/skill.json +0 -53
  393. package/skills/provider-github-release/SKILL.md +0 -121
  394. package/skills/provider-github-release/adapters/claude.md +0 -1
  395. package/skills/provider-github-release/adapters/codex.md +0 -1
  396. package/skills/provider-github-release/skill.json +0 -55
  397. package/skills/provider-kubernetes/SKILL.md +0 -143
  398. package/skills/provider-kubernetes/adapters/claude.md +0 -1
  399. package/skills/provider-kubernetes/adapters/codex.md +0 -1
  400. package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
  401. package/skills/provider-kubernetes/skill.json +0 -52
  402. package/skills/provider-railway/SKILL.md +0 -123
  403. package/skills/provider-railway/adapters/claude.md +0 -1
  404. package/skills/provider-railway/adapters/codex.md +0 -1
  405. package/skills/provider-railway/adapters/local.md +0 -1
  406. package/skills/provider-railway/adapters/opencode.md +0 -1
  407. package/skills/provider-railway/references/verification-commands.md +0 -39
  408. package/skills/provider-railway/skill.json +0 -71
  409. package/skills/provider-ssh-manual/SKILL.md +0 -97
  410. package/skills/provider-ssh-manual/skill.json +0 -54
  411. package/skills/repo-coding-rules/SKILL.md +0 -55
  412. package/skills/repo-coding-rules/skill.json +0 -34
  413. package/skills/role-cont-eval/SKILL.md +0 -91
  414. package/skills/role-cont-eval/adapters/codex.md +0 -1
  415. package/skills/role-cont-eval/skill.json +0 -36
  416. package/skills/role-cont-qa/SKILL.md +0 -100
  417. package/skills/role-cont-qa/adapters/claude.md +0 -1
  418. package/skills/role-cont-qa/skill.json +0 -36
  419. package/skills/role-deploy/SKILL.md +0 -97
  420. package/skills/role-deploy/skill.json +0 -36
  421. package/skills/role-design/SKILL.md +0 -50
  422. package/skills/role-design/skill.json +0 -36
  423. package/skills/role-documentation/SKILL.md +0 -76
  424. package/skills/role-documentation/skill.json +0 -36
  425. package/skills/role-implementation/SKILL.md +0 -45
  426. package/skills/role-implementation/skill.json +0 -36
  427. package/skills/role-infra/SKILL.md +0 -81
  428. package/skills/role-infra/skill.json +0 -36
  429. package/skills/role-integration/SKILL.md +0 -91
  430. package/skills/role-integration/skill.json +0 -36
  431. package/skills/role-planner/SKILL.md +0 -39
  432. package/skills/role-planner/skill.json +0 -21
  433. package/skills/role-research/SKILL.md +0 -65
  434. package/skills/role-research/skill.json +0 -36
  435. package/skills/role-security/SKILL.md +0 -60
  436. package/skills/role-security/skill.json +0 -36
  437. package/skills/runtime-claude/SKILL.md +0 -66
  438. package/skills/runtime-claude/skill.json +0 -36
  439. package/skills/runtime-codex/SKILL.md +0 -58
  440. package/skills/runtime-codex/skill.json +0 -36
  441. package/skills/runtime-local/SKILL.md +0 -46
  442. package/skills/runtime-local/skill.json +0 -36
  443. package/skills/runtime-opencode/SKILL.md +0 -58
  444. package/skills/runtime-opencode/skill.json +0 -36
  445. package/skills/signal-hygiene/SKILL.md +0 -51
  446. package/skills/signal-hygiene/skill.json +0 -20
  447. package/skills/tui-design/SKILL.md +0 -77
  448. package/skills/tui-design/references/tui-design.md +0 -259
  449. package/skills/tui-design/skill.json +0 -36
  450. package/skills/wave-core/SKILL.md +0 -141
  451. package/skills/wave-core/references/marker-syntax.md +0 -70
  452. package/skills/wave-core/skill.json +0 -35
  453. package/src/README.md +0 -85
  454. package/src/api/README.md +0 -22
  455. package/src/api/public-types.ts +0 -525
  456. package/src/component-inventory.md +0 -99
  457. package/src/core/README.md +0 -10
  458. package/src/core/commands/README.md +0 -3
  459. package/src/core/commands/formatting-commands.ts +0 -161
  460. package/src/core/commands/image-commands.ts +0 -144
  461. package/src/core/commands/index.ts +0 -1013
  462. package/src/core/commands/list-commands.ts +0 -370
  463. package/src/core/commands/review-commands.ts +0 -108
  464. package/src/core/commands/text-commands.ts +0 -119
  465. package/src/core/schema/README.md +0 -3
  466. package/src/core/schema/text-schema.ts +0 -512
  467. package/src/core/selection/README.md +0 -3
  468. package/src/core/selection/mapping.ts +0 -238
  469. package/src/core/selection/review-anchors.ts +0 -94
  470. package/src/core/state/README.md +0 -3
  471. package/src/core/state/editor-state.ts +0 -580
  472. package/src/core/state/text-transaction.ts +0 -276
  473. package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
  474. package/src/formats/xlsx/io/parse-sheet.ts +0 -289
  475. package/src/formats/xlsx/io/parse-styles.ts +0 -57
  476. package/src/formats/xlsx/io/parse-workbook.ts +0 -75
  477. package/src/formats/xlsx/io/xlsx-session.ts +0 -306
  478. package/src/formats/xlsx/model/cell.ts +0 -189
  479. package/src/formats/xlsx/model/sheet.ts +0 -244
  480. package/src/formats/xlsx/model/styles.ts +0 -118
  481. package/src/formats/xlsx/model/workbook.ts +0 -449
  482. package/src/io/README.md +0 -10
  483. package/src/io/docx-session.ts +0 -1763
  484. package/src/io/export/README.md +0 -3
  485. package/src/io/export/export-session.ts +0 -165
  486. package/src/io/export/minimal-docx.ts +0 -115
  487. package/src/io/export/reattach-preserved-parts.ts +0 -54
  488. package/src/io/export/serialize-comments.ts +0 -876
  489. package/src/io/export/serialize-footnotes.ts +0 -217
  490. package/src/io/export/serialize-headers-footers.ts +0 -200
  491. package/src/io/export/serialize-main-document.ts +0 -982
  492. package/src/io/export/serialize-numbering.ts +0 -97
  493. package/src/io/export/serialize-revisions.ts +0 -389
  494. package/src/io/export/serialize-runtime-revisions.ts +0 -265
  495. package/src/io/export/serialize-tables.ts +0 -147
  496. package/src/io/export/split-review-boundaries.ts +0 -194
  497. package/src/io/normalize/README.md +0 -3
  498. package/src/io/normalize/normalize-text.ts +0 -437
  499. package/src/io/ooxml/README.md +0 -3
  500. package/src/io/ooxml/parse-comments.ts +0 -779
  501. package/src/io/ooxml/parse-complex-content.ts +0 -287
  502. package/src/io/ooxml/parse-fields.ts +0 -438
  503. package/src/io/ooxml/parse-footnotes.ts +0 -403
  504. package/src/io/ooxml/parse-headers-footers.ts +0 -483
  505. package/src/io/ooxml/parse-inline-media.ts +0 -431
  506. package/src/io/ooxml/parse-main-document.ts +0 -1846
  507. package/src/io/ooxml/parse-numbering.ts +0 -425
  508. package/src/io/ooxml/parse-revisions.ts +0 -658
  509. package/src/io/ooxml/parse-shapes.ts +0 -271
  510. package/src/io/ooxml/parse-tables.ts +0 -568
  511. package/src/io/ooxml/parse-theme.ts +0 -314
  512. package/src/io/ooxml/part-manifest.ts +0 -136
  513. package/src/io/ooxml/revision-boundaries.ts +0 -351
  514. package/src/io/opc/README.md +0 -3
  515. package/src/io/opc/corrupt-package.ts +0 -166
  516. package/src/io/opc/docx-package.ts +0 -74
  517. package/src/io/opc/package-reader.ts +0 -320
  518. package/src/io/opc/package-writer.ts +0 -273
  519. package/src/model/README.md +0 -3
  520. package/src/model/canonical-document.ts +0 -1911
  521. package/src/model/cds-1.0.0.ts +0 -196
  522. package/src/model/snapshot.ts +0 -393
  523. package/src/preservation/README.md +0 -3
  524. package/src/preservation/markup-compatibility.ts +0 -48
  525. package/src/preservation/opaque-fragment-store.ts +0 -89
  526. package/src/preservation/opaque-region.ts +0 -233
  527. package/src/preservation/package-preservation.ts +0 -120
  528. package/src/preservation/preserved-part-manifest.ts +0 -56
  529. package/src/preservation/relationship-retention.ts +0 -57
  530. package/src/preservation/store.ts +0 -185
  531. package/src/review/README.md +0 -16
  532. package/src/review/store/README.md +0 -3
  533. package/src/review/store/comment-anchors.ts +0 -70
  534. package/src/review/store/comment-remapping.ts +0 -154
  535. package/src/review/store/comment-store.ts +0 -331
  536. package/src/review/store/comment-thread.ts +0 -109
  537. package/src/review/store/revision-actions.ts +0 -394
  538. package/src/review/store/revision-store.ts +0 -303
  539. package/src/review/store/revision-types.ts +0 -168
  540. package/src/review/store/runtime-comment-store.ts +0 -43
  541. package/src/runtime/README.md +0 -3
  542. package/src/runtime/ai-action-policy.ts +0 -764
  543. package/src/runtime/document-runtime.ts +0 -969
  544. package/src/runtime/read-only-diagnostics-runtime.ts +0 -232
  545. package/src/runtime/review-runtime.ts +0 -44
  546. package/src/runtime/revision-runtime.ts +0 -107
  547. package/src/runtime/session-capabilities.ts +0 -138
  548. package/src/runtime/surface-projection.ts +0 -570
  549. package/src/runtime/table-commands.ts +0 -84
  550. package/src/runtime/table-schema.ts +0 -125
  551. package/src/ui/README.md +0 -30
  552. package/src/ui/WordReviewEditor.tsx +0 -1283
  553. package/src/ui/comments/README.md +0 -3
  554. package/src/ui/compatibility/README.md +0 -3
  555. package/src/ui/editor-surface/README.md +0 -3
  556. package/src/ui/headless/comment-decoration-model.ts +0 -124
  557. package/src/ui/headless/revision-decoration-model.ts +0 -128
  558. package/src/ui/headless/selection-helpers.ts +0 -34
  559. package/src/ui/headless/use-editor-keyboard.ts +0 -98
  560. package/src/ui/review/README.md +0 -3
  561. package/src/ui/shared/revision-filters.ts +0 -31
  562. package/src/ui/status/README.md +0 -3
  563. package/src/ui/theme/README.md +0 -3
  564. package/src/ui/toolbar/README.md +0 -3
  565. package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -48
  566. package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -44
  567. package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
  568. package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
  569. package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -139
  570. package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -98
  571. package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
  572. package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -452
  573. package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -327
  574. package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -157
  575. package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
  576. package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
  577. package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -118
  578. package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -52
  579. package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
  580. package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -215
  581. package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
  582. package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -108
  583. package/src/ui-tailwind/index.ts +0 -61
  584. package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -276
  585. package/src/ui-tailwind/review/tw-health-panel.tsx +0 -120
  586. package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
  587. package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
  588. package/src/ui-tailwind/status/tw-status-bar.tsx +0 -58
  589. package/src/ui-tailwind/theme/editor-theme.css +0 -190
  590. package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -48
  591. package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -231
  592. package/src/ui-tailwind/tw-review-workspace.tsx +0 -140
  593. package/src/validation/README.md +0 -3
  594. package/src/validation/compatibility-engine.ts +0 -317
  595. package/src/validation/compatibility-report.ts +0 -160
  596. package/src/validation/diagnostics.ts +0 -203
  597. package/src/validation/import-diagnostics.ts +0 -128
  598. package/src/validation/low-priority-word-surfaces.ts +0 -373
  599. package/test/README.md +0 -16
  600. package/test/core/formatting-commands.test.ts +0 -285
  601. package/test/core/image-commands.test.ts +0 -298
  602. package/test/core/mapping.test.ts +0 -186
  603. package/test/core/text-commands.test.ts +0 -176
  604. package/test/fixtures/docx/F01-basic-contract.docx +0 -0
  605. package/test/fixtures/docx/F01-basic-contract.md +0 -33
  606. package/test/fixtures/docx/F02-headings-styles.docx +0 -0
  607. package/test/fixtures/docx/F02-headings-styles.md +0 -33
  608. package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
  609. package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
  610. package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
  611. package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
  612. package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
  613. package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
  614. package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
  615. package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
  616. package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
  617. package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
  618. package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
  619. package/test/fixtures/docx/F08-hyperlinks.md +0 -33
  620. package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
  621. package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
  622. package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
  623. package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
  624. package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
  625. package/test/fixtures/docx/F11-redlines-basic.md +0 -33
  626. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
  627. package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
  628. package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
  629. package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
  630. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
  631. package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
  632. package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
  633. package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
  634. package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
  635. package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
  636. package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
  637. package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
  638. package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
  639. package/test/fixtures/docx/F18-content-controls-template.md +0 -33
  640. package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
  641. package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
  642. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
  643. package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
  644. package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
  645. package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
  646. package/test/fixtures/docx/README.md +0 -74
  647. package/test/fixtures/docx/certification-manifest.json +0 -104
  648. package/test/fixtures/docx/fixtures.manifest.json +0 -196
  649. package/test/fixtures/encrypted-docx/README.md +0 -27
  650. package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
  651. package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
  652. package/test/fixtures/scenarios/docx/README.md +0 -25
  653. package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
  654. package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
  655. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
  656. package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +0 -32
  657. package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
  658. package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
  659. package/test/formats/xlsx/model/workbook.test.ts +0 -669
  660. package/test/helpers/dom-setup.ts +0 -124
  661. package/test/io/comment-roundtrip.test.ts +0 -272
  662. package/test/io/complex-content-roundtrip.test.ts +0 -632
  663. package/test/io/docx-compatibility-regression.test.ts +0 -199
  664. package/test/io/docx-session.test.ts +0 -1495
  665. package/test/io/footnotes-roundtrip.test.ts +0 -318
  666. package/test/io/headers-footers-roundtrip.test.ts +0 -547
  667. package/test/io/numbering-roundtrip.test.ts +0 -234
  668. package/test/io/package-reader.test.ts +0 -199
  669. package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
  670. package/test/io/preserved-package-roundtrip.test.ts +0 -365
  671. package/test/io/property-completeness.test.ts +0 -292
  672. package/test/io/revision-roundtrip.test.ts +0 -347
  673. package/test/io/structural-blocks.test.ts +0 -202
  674. package/test/io/table-media-roundtrip.test.ts +0 -448
  675. package/test/io/table-properties-roundtrip.test.ts +0 -569
  676. package/test/io/table-roundtrip.test.ts +0 -302
  677. package/test/io/text-roundtrip.test.ts +0 -344
  678. package/test/model/canonical-document.test.ts +0 -285
  679. package/test/preservation/opaque-fragment-store.test.ts +0 -121
  680. package/test/preservation/package-preservation.test.ts +0 -395
  681. package/test/preservation/store.test.ts +0 -84
  682. package/test/review/comment-remapping.test.ts +0 -220
  683. package/test/review/comment-store.test.ts +0 -180
  684. package/test/review/move-revisions.test.ts +0 -143
  685. package/test/review/property-change-revisions.test.ts +0 -225
  686. package/test/review/revision-actions.test.ts +0 -330
  687. package/test/review/revision-store.test.ts +0 -193
  688. package/test/runtime/session-capabilities.test.ts +0 -260
  689. package/test/runtime/table-commands.test.ts +0 -356
  690. package/test/runtime/table-schema.test.ts +0 -221
  691. package/test/runtime/tracked-changes-toggle.test.ts +0 -107
  692. package/test/ui/comment-review-surface.test.tsx +0 -114
  693. package/test/ui/reduced-motion-toggle.test.tsx +0 -137
  694. package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
  695. package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
  696. package/test/ui/word-review-editor.test.js +0 -188
  697. package/test/ui/word-review-editor.test.tsx +0 -280
  698. package/test/ui-tailwind/search-plugin.test.ts +0 -286
  699. package/test/validation/compatibility-engine.test.ts +0 -336
  700. package/test/validation/compatibility-report.test.ts +0 -189
  701. package/test/validation/low-priority-word-surfaces.test.ts +0 -282
  702. package/test/validation/malformed-doc.test.ts +0 -113
  703. package/test-results/.last-run.json +0 -4
  704. package/wave.config.json +0 -406
@@ -1,520 +0,0 @@
1
- # SpreadsheetEditor UX Guide
2
-
3
- ## Interpretation of the problem
4
-
5
- You want an implementation-ready, repo-ready UX guide for a React-based spreadsheet editor that round-trips modern Excel workbooks reliably: import `.xlsx` (as an OOXML/Open Packaging Conventions package), edit against a runtime-owned canonical workbook state, export back to a package that reopens in recent Excel environments without repair prompts or silent loss of content that Excel considers supported.
6
-
7
- This guide has to be honest about v1 scope boundaries. Anything that cannot be safely supported end-to-end (import → runtime edit → export → reopen) must be explicitly classified and surfaced to the user as preserve-only or unsupported-fatal, with an explicit response model (preserve, lock, warn, block, fail) and zero silent dropping. Markup/parts you don’t understand still must be preserved as package artifacts, and the UI must remain a projection of runtime state rather than a React-owned workbook.
8
-
9
- The UX must treat spreadsheets as spreadsheets (grid-first, selection semantics, formula inspection vs edit friction, comments/notes navigation, sheet tabs), not as “rich text with cells.” It must also acknowledge Excel’s real-world constraints (limits, naming rules) and the fact that Excel behavior can diverge from the base standard or rely on extensions, so you need to distinguish normative specs from observed Excel behavior and gate export trust accordingly.
10
-
11
- ## Research plan
12
-
13
- I approached this by splitting “correctness” into three layers and using primary/official references wherever possible.
14
-
15
- First, establish the normative substrate: `.xlsx` as an Open Packaging Conventions (OPC) package and the SpreadsheetML part graph model (parts, content types, relationships).
16
-
17
- Second, map “Excel reality” on top: Microsoft’s published extensions and implementation notes (what Excel adds/extends and where observed behavior varies from the underlying spec), with special attention to areas that commonly trigger Excel repair flows (calc chain/calculation properties, worksheet properties, drawings, etc.).
18
-
19
- Third, convert those constraints into UX posture: a grid-centric interaction model, explicit health/trust surfaces, keyboard/accessibility posture aligned with ARIA grid guidance, and a demo/harness model that exercises round-trip gates through realistic fixtures.
20
-
21
- ## Findings
22
-
23
- **Normative substrate: `.xlsx` is an OPC package, not “some XML files.”** OPC defines a package as a container of “parts” connected by relationships, with content types declared and enforced; this is the base model used by Office Open XML file formats.
24
-
25
- **SpreadsheetML structure is relationship-driven, and the minimum workbook is still a graph.** A SpreadsheetML document includes a `workbook.xml` that references worksheets via relationship IDs, with each worksheet stored in its own part; and real workbooks commonly include other parts (tables, chartsheets, pivot table definitions, etc.).
26
-
27
- **Compatibility requires respect for markup compatibility and extensibility.** OOXML’s markup compatibility mechanisms exist specifically so producers can include newer/unknown vocabularies while allowing consumers with different feature sets to interoperate (e.g., ignorable namespaces, alternate content). This is the formal basis for a “preserve unknown markup” stance rather than “parse what we know and drop the rest.”
28
-
29
- **Excel behavior is not just the ISO/ECMA baseline; it also relies on extensions and implementation-defined details.** Microsoft publishes (a) extension specifications for `.xlsx` and (b) implementation notes describing how Office implements and varies from ISO/IEC 29500, explicitly calling out that Office can extend or deviate and that those notes are updated.
30
-
31
- **Comments vs notes is a real UX fault line in modern Excel environments.** Excel distinguishes threaded “Comments” (discussion model) from “Notes” (legacy comment model), which affects how you should present annotation features and what you can honestly claim to support in v1.
32
-
33
- **Excel has explicit repair/recovery flows that you can treat as the user-visible failure mode for bad exports.** Microsoft documents “Open and Repair” and recovery strategies for corrupted workbooks, which is effectively your compatibility bar: if your export triggers repair prompts, you failed the “host is the standard” requirement.
34
-
35
- **Hard constraints affect UX and validation (limits and naming rules).** Excel’s published workbook/worksheet limits are not theoretical; they bound what “safe mode” and “large workbook posture” should mean in practice.
36
- Worksheet names also have explicit constraints (non-empty, length, forbidden characters), and violating these is a common generator of “unreadable content / repair” scenarios in real ecosystems.
37
-
38
- **Calculation state is a common source of round-trip landmines.** The SpreadsheetML model includes calculation properties (e.g., `calcPr`) and an optional calculation chain part (`calcChain.xml`) that records last calculation order; libraries and Excel can react badly to inconsistencies (missing referenced parts, stale chain, etc.).
39
- Additionally, Microsoft’s implementation notes explicitly document places where Excel uses defaults or behaviors not fully pinned down by the base standard (example: defaults in calculation properties).
40
-
41
- **Keyboard and accessibility posture for a web spreadsheet is not optional; ARIA grid guidance is the baseline.** W3C’s ARIA Authoring Practices provide explicit keyboard interaction expectations for grid patterns; if you want a credible “Excel-like” editor on the web, this guidance should shape focus management and navigation semantics.
42
-
43
- ## Recommended design / decisions
44
-
45
- The UX guide below is built around a few non-negotiable decisions that follow directly from the standards/behavior findings and your framing constraints.
46
-
47
- The editor must expose a calm “trust and health” contract, because Excel’s native failure mode for structural issues is “repair/remove content,” which users correctly interpret as “data loss risk.” That means: always show whether the session can export safely, and why; never bury preserve-only/blocked/fatal states inside a console log or a tiny badge.
48
-
49
- The product should treat “package preservation” as a first-class UX concept: preserved-but-not-editable objects must be visible as objects with identity (not as scary red errors), and edits that would invalidate preserved structures must either be blocked or downgraded to preserve-only with an explicit warning, never silently applied. This is aligned with the OOXML/OPC reality that a workbook is a relationship graph and with markup compatibility’s explicit interoperability intent.
50
-
51
- Grid-first UX should be enforced structurally: the grid is the primary visual focus; toolbars and review chrome are secondary and must not turn into a ribbon clone. The formula bar needs to exist (even in v1) because spreadsheets have a persistent tension between “inspect the formula/value” and “edit the formula/value,” and relying solely on inline edit tends to collapse those modes into confusion. This should be framed as explicit “inspect vs edit” modes rather than pretending they’re the same thing.
52
-
53
- Accessibility and keyboard support need to be designed, not patched. A spreadsheet grid is fundamentally a grid widget with heavy keyboard navigation; ARIA grid practices should drive the core navigation and focus model from day one, even if some Excel shortcuts are out of scope initially.
54
-
55
- Finally, v1 must be honest about calculations and complex features. If you are not implementing a full Excel calc engine, you should not claim “formula correctness.” The UX should clearly communicate what is being shown (stored values vs computed values) and how export will behave (e.g., “recalculate on open” posture) while avoiding any approach that produces workbooks Excel will “repair.”
56
-
57
- ## Risks and open questions
58
-
59
- The biggest product risk is **accidentally shipping “looks fine in our editor, repairs in Excel.”** Excel’s repair tooling exists specifically because small structural mistakes in parts/relationships/calculation state/drawings can make a workbook partially unreadable, leading to removed records or user prompts. Your UX must assume that any such event destroys trust, regardless of how good the web UI felt.
60
-
61
- The second major risk is **formula and value truthfulness.** If you edit formula strings but do not compute results, you will be showing either stale cached values or blank results. You can mitigate with a recalc-on-open posture, but you must ensure calculation properties are coherent and you don’t create/retain calc chains in an inconsistent way.
62
-
63
- A third risk is **comment model mismatch (Notes vs threaded Comments).** If you partially support one model and accidentally mutate the other’s underlying structure, you can break how Excel interprets the annotations. This is a classic “preserve-only unless fully supported” boundary.
64
-
65
- A fourth risk is **Strict vs Transitional and “real world” OOXML variance.** Tooling (including SDKs and producers) can map or normalize namespaces and structures; the ecosystem reality is messy. Your preservation layer needs to be robust to variance and your UX needs to clearly say what you validated vs what you merely preserved.
66
-
67
- Open questions you should explicitly decide before “v1 stable UX”:
68
- - Whether v1 supports any editable form of filters/tables/frozen panes versus preserve-only indicators (these features are common in real workbooks, and the UX must not surprise users either way).
69
- - Whether v1 supports threaded Comments, Notes, both as preserve-only, or one editable and one preserve-only; and what “review surfaces” mean in that choice.
70
- - What your official “large workbook safe mode” triggers are, and which interactions are disabled or degraded in that mode (because Excel’s limits and typical workbook scale vary wildly, and web performance failure modes are brutal).
71
-
72
- ## Concrete deliverable in the requested format
73
-
74
- ```md
75
- # SpreadsheetEditor UX Guide
76
-
77
- Status: Draft (non-production posture)
78
- Last updated: 2026-03-28
79
- Audience: Product + Engineering (editor runtime, UI, QA, certification review)
80
-
81
- This document defines the canonical UX for SpreadsheetEditor: an embeddable React component that edits Excel-compatible workbooks through a runtime-owned canonical state. The UI is a projection of runtime state. All changes happen via commands → transactions → commit.
82
-
83
- This is not a promise of “full Excel in the browser.” It is a promise of honesty, preservation, and export trust.
84
-
85
- ---
86
-
87
- ## Purpose
88
-
89
- SpreadsheetEditor exists to:
90
- - Allow safe, high-confidence edits to XLSX workbooks in a web host without breaking Excel reopen behavior.
91
- - Provide a grid-first editing experience that respects spreadsheet interaction semantics (selection, ranges, formulas, sheets).
92
- - Preserve unsupported content as package artifacts with explicit user-facing health/trust signaling.
93
- - Offer one embeddable React component with a typed public API, where React does not own workbook truth.
94
-
95
- Non-goals:
96
- - Building a ribbon clone.
97
- - Implementing the full Excel calculation engine in v1.
98
- - Claiming fidelity for features that cannot round-trip safely.
99
-
100
- ---
101
-
102
- ## Product posture and v1 support boundaries
103
-
104
- ### Support levels (must be explicit in UI and API)
105
- - Supported: Import → edit → export → reopen is covered by automated + manual gates.
106
- - Preserve-only: Imported and preserved byte-for-byte (or semantically preserved) but not edited; shown in UX as “present but not editable here.”
107
- - Locked: Data is editable only where allowed (e.g., protection, policy). UX blocks prohibited edits with explanation.
108
- - Blocked: Operation is not allowed because it risks breaking the file or violating policy; user can still inspect and export unchanged.
109
- - Fatal: File cannot be safely loaded into runtime (or cannot be exported) without risking corruption; editor refuses or enters read-only “recovery view.”
110
-
111
- ### Export trust posture
112
- Export is never “just a download button.”
113
- Export is a trust contract:
114
- - If export is allowed, the editor states what it guarantees (and what it does not).
115
- - If export is blocked, the editor states exactly why and what the user can do (if anything).
116
-
117
- ### v1 honesty defaults
118
- Unless explicitly listed as Supported, treat workbook features as Preserve-only.
119
- If a feature is common and risky (charts/pivots/drawings/macros/protection variants), default to Preserve-only or Locked until proven safe.
120
-
121
- ---
122
-
123
- ## UX layers and internal interfaces
124
-
125
- ### Host framing layer (owned by the embedding app)
126
- Responsibilities:
127
- - Routing, navigation, and file/session selection.
128
- - Auth, tenancy, and policy (what is allowed to be edited/exported).
129
- - Storage/IO: loading bytes, saving bytes, versioning, collaboration orchestration (if any).
130
- - Displaying global banners/modals that are not editor-specific (e.g., org-wide incident banners).
131
-
132
- Host must treat SpreadsheetEditor as a pure component:
133
- - The host provides a file (bytes/stream) and receives events, commands, and exported bytes.
134
- - The host does not mutate the workbook directly.
135
-
136
- ### Editor layer (SpreadsheetEditor component)
137
- Responsibilities:
138
- - Parse/load into runtime canonical workbook state (or refuse with Fatal).
139
- - Maintain canonical state (runtime-owned), including preservation registry for unknown parts.
140
- - Project state into UI view models.
141
- - Offer command API and transaction model.
142
- - Provide health/trust surfaces and export gating.
143
-
144
- ### Routes (for demo harness / workspace shell)
145
- Suggested harness routes:
146
- - /spreadsheet (library / session list)
147
- - /spreadsheet/:fixtureId (opens a known fixture workbook)
148
- - /spreadsheet/:docId (opens a host-provided document id)
149
- - /spreadsheet/:docId/compare (optional: compare last export vs original)
150
-
151
- Routes are harness-only. The shipped product is a single embeddable component.
152
-
153
- ---
154
-
155
- ## Screen anatomy
156
-
157
- The editor UI is intentionally simple and grid-centric.
158
-
159
- Recommended layout:
160
-
161
- [Top bar]
162
- - File name + save/export status
163
- - Health/Trust chip (calm, always visible)
164
- - Minimal primary actions (Undo/Redo, Export)
165
-
166
- [Formula zone]
167
- - Name box (active cell reference, e.g., A1) + optional range size indicator
168
- - Formula bar (view/edit formula/value)
169
- - Function hint / validation messages (inline, unobtrusive)
170
-
171
- [Main zone]
172
- - Grid (primary focus)
173
- - Row headers
174
- - Column headers
175
- - Cell canvas (virtualized)
176
- - Sheet tabs (bottom)
177
- - Optional right side panel (secondary)
178
- - Comments/Notes
179
- - Health report
180
- - Preserve-only inventory
181
-
182
- [Bottom status bar]
183
- - Selection summary (count/sum/avg if implemented)
184
- - Mode indicators (Edit mode, Safe mode, Read-only, Filter present, etc.)
185
-
186
- Rules:
187
- - Grid is always the visual priority.
188
- - Side panels never steal the center; they can collapse.
189
- - Warnings are calm and actionable, not alarming unless truly fatal.
190
-
191
- ---
192
-
193
- ## Session inventory
194
-
195
- A “session” is the unit the host and editor talk about. The session model must be visible in the UI (status, health) and explicit in the API.
196
-
197
- Session includes:
198
- - Source: file id, filename, extension, last loaded timestamp
199
- - Workbook identity: package fingerprint (hash), internal workbook id (runtime)
200
- - Editability: read/write, policy locks, protection locks
201
- - Health state: aggregated level + list of issues
202
- - Preserve-only inventory: counts by feature type (e.g., charts, pivots, drawings)
203
- - Performance mode: normal vs Safe mode, and why
204
- - Dirty state: pending changes vs committed changes, last commit id
205
- - Export plan: whether export is allowed; if allowed, export warnings and known changes
206
- - Diagnostics bundle id (optional): for support and reproducibility
207
-
208
- ---
209
-
210
- ## Interaction rules
211
-
212
- ### Focus and modality
213
- The editor has two primary modes:
214
- - Navigate/select mode: arrow keys move the active cell; shift extends selection; grid is in control.
215
- - Edit mode: typing edits the cell content (inline) or formula bar content (explicit), with clear entry/exit.
216
-
217
- Rules:
218
- - There is always exactly one active cell.
219
- - There is at most one primary selection (a range).
220
- - A selection can be:
221
- - Single cell
222
- - Range
223
- - Entire row(s)
224
- - Entire column(s)
225
- - Entire sheet (optional; usually via corner cell)
226
-
227
- ### Selection behavior
228
- - Click cell: active cell set, selection = that cell.
229
- - Drag: selection expands to rectangle range.
230
- - Shift+click: expands selection to rectangle between active cell anchor and target.
231
- - Ctrl/Cmd+click: v1 default is “replace selection” (multi-range selection is optional and must be explicit if supported).
232
- - Header click:
233
- - Row header selects row.
234
- - Column header selects column.
235
- - Sheet tab click selects sheet; preserves last active cell per sheet.
236
-
237
- Selection must never mutate the workbook. Selection only updates view state.
238
-
239
- ### Copy/paste behavior (v1 safe default)
240
- - Copy/paste inside the editor is supported for values + basic formulas + basic formats (only if formats are Supported).
241
- - Pasting external content (from system clipboard) is “best effort” and must never:
242
- - silently drop data
243
- - create invalid workbook state
244
- If paste cannot be represented safely, block with explanation and offer to paste as plain text.
245
-
246
- ### Undo/redo
247
- Undo/redo is command-driven:
248
- - Every edit command yields an undoable transaction.
249
- - UI must show that undo/redo affects workbook state, not just the UI.
250
-
251
- ---
252
-
253
- ## Toolbar principles
254
-
255
- Design principles:
256
- - Minimal, task-oriented, not a ribbon.
257
- - Default to “common spreadsheet edits,” not formatting power-user operations.
258
- - The toolbar is context-aware but not context-exploding.
259
-
260
- Recommended v1 toolbar groups:
261
- - Edit: Undo, Redo
262
- - Insert: Row, Column (only if safe)
263
- - Format (optional v1): Bold, Italic, Number format (very small subset)
264
- - Data (optional v1): Sort (simple), Filter indicator (edit may be out of scope)
265
- - Review: Comments/Notes panel toggle, Health panel toggle
266
- - Export: Export button with trust status (and dropdown for “export with warnings” only if needed)
267
-
268
- Rules:
269
- - Any action that could break preserve-only content must either be blocked or must upgrade the health state with explicit warning before commit.
270
-
271
- ---
272
-
273
- ## Grid and formula bar behavior
274
-
275
- ### Grid is primary editing surface
276
- - Single-click selects.
277
- - Double-click enters inline edit.
278
- - Typing when in navigate mode starts inline edit (unless policy blocks).
279
-
280
- Inline editor:
281
- - Shows raw formula text if the cell has a formula.
282
- - Shows displayed value if the cell is a value cell.
283
- - Provides lightweight validation feedback (e.g., “Invalid reference” as warn, not as hard fail, unless it breaks export).
284
-
285
- ### Formula bar is primary inspection + precise edit surface
286
- Formula bar supports:
287
- - Always-visible display of the active cell’s raw content:
288
- - If formula: show formula text.
289
- - If value: show value representation (string/number/date formatting depends on Supported formatting).
290
- - Explicit edit mode:
291
- - Enter starts editing the formula bar content.
292
- - Escape cancels edits.
293
- - Commit occurs on Enter, with clear visual confirmation.
294
-
295
- Tradeoff posture:
296
- - Inline edit is fast.
297
- - Formula bar edit is precise and better for long formulas.
298
- UX must make it clear which one you’re doing.
299
-
300
- ### Inspect vs edit “conflict” rule
301
- When the user is inspecting a formula (e.g., a read-only preview state), do not auto-enter edit mode. Require explicit action (double-click or Enter) to edit. This prevents accidental edits during audit/review use.
302
-
303
- ---
304
-
305
- ## Comments, review, and health surfaces
306
-
307
- ### Comments/Notes panel
308
- A single panel that can show:
309
- - Threaded Comments (if Supported or Preserve-only view)
310
- - Notes (legacy) (if Supported or Preserve-only view)
311
- v1 may support:
312
- - Read-only list + navigation (scroll to anchor cell)
313
- - Add/edit only for the comment type that round-trips safely
314
-
315
- Navigation:
316
- - Next/previous comment traversal jumps active cell.
317
- - Panel clearly labels whether comments are editable or preserve-only.
318
-
319
- ### Health / Trust panel (always available)
320
- The Health panel is the user-facing representation of your preservation + export contract.
321
-
322
- It must list:
323
- - Issues grouped by severity: Preserve-only, Locked, Warn, Blocked, Fatal.
324
- - For each issue:
325
- - What it is (plain language)
326
- - Where it is (sheet/cell/object)
327
- - What the editor will do (preserve/lock/warn/block/fail)
328
- - Whether export is allowed and what will happen in Excel
329
-
330
- Calm tone rules:
331
- - Preserve-only is not an error. It’s “present, unchanged.”
332
- - Warn is “may change behavior,” not “you broke it.”
333
- - Block/Fatal are rare and must be specific.
334
-
335
- ### Preserve-only inventory surface
336
- Non-cell features (charts, pivots, images, drawings, external links, advanced tables, advanced protection, etc.) should appear as inventory items with:
337
- - Type
338
- - Count
339
- - Location (sheet)
340
- - Behavior: Preserved unchanged; not editable here
341
- - Risk: whether certain edits could invalidate them (if known)
342
-
343
- Do not render fake versions of these objects in v1. Use placeholders and honesty.
344
-
345
- ---
346
-
347
- ## Warning, preserve-only, blocked, and fatal states
348
-
349
- ### State definitions (UX contract)
350
- - Preserve-only:
351
- - UI: neutral info badge + panel entry.
352
- - Behavior: preserved through export unchanged as long as edits do not require rewriting those parts.
353
- - Locked:
354
- - UI: lock icon in relevant surfaces; editing actions disabled with explanation.
355
- - Behavior: protect workbook integrity and policy compliance.
356
- - Warn:
357
- - UI: yellow/calming indicator + details on demand.
358
- - Behavior: allow edits but surface tradeoffs; export allowed with warning note.
359
- - Blocked:
360
- - UI: action disabled; explicit reason and alternative (if any).
361
- - Behavior: prevent unsafe edit/export transitions.
362
- - Fatal:
363
- - UI: refuse to enter edit session OR open in “recovery view” (read-only) with diagnostics.
364
- - Behavior: no export unless “export unchanged” is proven safe.
365
-
366
- ### Export gating rules (v1)
367
- - Allowed:
368
- - Supported + Preserve-only issues only.
369
- - Allowed with warnings:
370
- - Warn issues present but not known to trigger repair; still requires explicit acknowledgment in UI.
371
- - Blocked:
372
- - Any blocked or fatal export issues.
373
- - Fail:
374
- - Export attempt produces invalid package; must be treated as a bug with a diagnostics bundle.
375
-
376
- ---
377
-
378
- ## Keyboard and accessibility posture
379
-
380
- Baseline posture:
381
- - Keyboard-first navigation must be usable.
382
- - Screen reader semantics must be coherent.
383
-
384
- Minimum keyboard set:
385
- - Arrow keys: move active cell
386
- - Shift+arrows: expand selection
387
- - Enter: move down (navigate mode) / commit (edit mode)
388
- - Tab: move right (navigate mode), with sheet boundary behavior defined
389
- - F2 (optional) or Enter: enter edit mode
390
- - Escape: exit edit mode / dismiss panels
391
- - Ctrl/Cmd+C/V/X: copy/paste/cut (subject to safety rules)
392
- - Ctrl/Cmd+Z/Y: undo/redo
393
-
394
- Accessibility requirements:
395
- - Grid uses an ARIA grid strategy with stable focus rules (“roving” focus, not thousands of tabbable cells).
396
- - Active cell is always announced.
397
- - Selection changes are announced in a throttled, non-spammy way.
398
- - High contrast + zoom must not break selection affordances.
399
-
400
- Out of scope in v1 unless proven:
401
- - Full Excel shortcut compatibility
402
- - Complex screen-reader formula auditing workflows
403
-
404
- ---
405
-
406
- ## Large workbook safe mode
407
-
408
- Safe mode exists to prevent browser death spirals and to preserve trust.
409
-
410
- Trigger examples (implementation-defined):
411
- - Extremely large sheet dimensions or used-range sizes
412
- - Too many styles/conditional formats
413
- - Huge shared string tables
414
- - Complex objects inventory beyond rendering budget
415
-
416
- Safe mode UX:
417
- - Persistent indicator: “Safe mode (performance)”
418
- - Clear list of disabled/limited interactions:
419
- - e.g., limited formatting, limited multi-sheet operations, disabled external paste, reduced reflow
420
- - No surprise: The user should know what’s limited before they run into it.
421
-
422
- Safe mode is not “read-only.” It is “reduced capability with safe export.”
423
-
424
- ---
425
-
426
- ## Demo / harness framing
427
-
428
- The demo harness is part of the product’s credibility. It should behave like a workspace shell and expose health/trust clearly.
429
-
430
- Harness requirements:
431
- - Fixture library (bundled workbooks) that cover:
432
- - clean/supported workbooks
433
- - preserve-only heavy workbooks (charts/pivots/images)
434
- - calculation-heavy workbooks (formulas)
435
- - protection-locked workbooks
436
- - large-workbook safe mode triggers
437
- - Each fixture page shows:
438
- - “What this proves” statement
439
- - Expected health state
440
- - Expected export result (reopen gates)
441
- - Export from harness stores:
442
- - original bytes
443
- - exported bytes
444
- - diff summary (parts changed)
445
- - “opened in Excel” manual checklist results (tracked by QA)
446
-
447
- ---
448
-
449
- ## Mapping to the final component
450
-
451
- SpreadsheetEditor (React component) mapping rules:
452
- - The React component owns rendering + input dispatch.
453
- - The runtime owns:
454
- - canonical workbook state
455
- - preservation registry
456
- - transaction log
457
- - validation and export pipeline
458
-
459
- Public API principles:
460
- - Typed commands, not ad-hoc callbacks.
461
- - Events are observable, not mutation hooks.
462
- - Host can:
463
- - load bytes
464
- - subscribe to session state + health
465
- - issue commands (edit cell, insert row, etc.)
466
- - request export
467
- - receive structured results (success + warnings or blocked/fatal)
468
-
469
- Required API surface (conceptual):
470
- - load(inputBytes, options) -> session
471
- - getStateSnapshot() -> { viewModel, health, inventory }
472
- - dispatch(command) -> transactionResult
473
- - export(options) -> { bytes | blocked | fatal, report }
474
- - on(eventType, handler) / subscribe(selector)
475
-
476
- ---
477
-
478
- ## Review checklist (v1 readiness gates)
479
-
480
- UX gates:
481
- - Grid remains primary focus; toolbars/panels don’t overwhelm.
482
- - Health/Trust is always visible and understandable.
483
- - Preserve-only content is visible, calm, and non-panicking.
484
- - Blocked/fatal states are explicit and actionable.
485
- - Safe mode messaging is persistent and honest.
486
- - Keyboard navigation is usable; focus never gets lost.
487
-
488
- Architecture gates (UX-relevant):
489
- - UI never mutates workbook directly; all changes are command→transaction→commit.
490
- - Unsupported content is never silently dropped.
491
- - Export is gated by health state, not by “it probably works.”
492
-
493
- Compatibility gates:
494
- - Exported files reopen in recent Excel environments without repair prompts for all Supported fixtures.
495
- - Preserve-only fixtures reopen with preserved content present and unchanged (as defined by the fixture expectations).
496
- - Any repair prompt in Supported fixtures is a release blocker.
497
-
498
- Documentation gates:
499
- - Each supported feature has:
500
- - definition
501
- - known failure modes
502
- - preserve-only fallback rule
503
- - Each preserve-only feature has:
504
- - visible UX surfacing
505
- - “what this means” explanation
506
- ```
507
-
508
- ## Sources
509
-
510
- publishes ECMA-376 (Office Open XML file formats), describing OOXML vocabularies and packaging as a standard reference point for producers/consumers.
511
-
512
- / publish ISO/IEC 29500-2 (Open Packaging Conventions), defining the package/parts/relationships model that underlies `.xlsx` as an OPC container.
513
-
514
- provides official Open Specifications for Excel’s `.xlsx` extensions and Office implementation notes, which are crucial for distinguishing spec-level correctness from “Excel correctness” (what Excel actually writes, reads, and varies).
515
-
516
- Microsoft’s Open XML SDK documentation provides authoritative implementation-oriented descriptions of SpreadsheetML structure, worksheet relationships, markup compatibility concepts, and calculation chain concepts used by ecosystem tooling.
517
-
518
- Microsoft Support documentation establishes real-world Excel constraints and failure modes that should directly shape validation, UX gating, and “export trust posture,” including workbook repair flows, worksheet naming rules, and workbook limits.
519
-
520
- ARIA Authoring Practices (APG) provides the baseline keyboard interaction guidance for grid widgets, which should shape spreadsheet navigation/focus models in a web UI.