@beyondwork/docx-react-component 1.0.0
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.
- package/.codex/config.toml +5 -0
- package/.corepack/v1/pnpm/10.30.3/.corepack +1 -0
- package/.corepack/v1/pnpm/10.30.3/LICENSE +22 -0
- package/.corepack/v1/pnpm/10.30.3/README.md +240 -0
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +6 -0
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +5 -0
- package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +195400 -0
- package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +2 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-arm64-2HJ4WGO6.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.darwin-x64-3G3H6IW4.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-arm64-msvc-Q6BARPPB.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/reflink.win32-x64-msvc-J2TZHRQI.node +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.bash +31 -0
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +22 -0
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +193 -0
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +27 -0
- package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x64.exe +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/vendor/fastlist-0.3.0-x86.exe +0 -0
- package/.corepack/v1/pnpm/10.30.3/dist/worker.js +10119 -0
- package/.corepack/v1/pnpm/10.30.3/package.json +192 -0
- package/.cursor/mcp.json +7 -0
- package/.github/workflows/ci.yml +35 -0
- package/.mcp.json +7 -0
- package/.openclaw/workspace-state.json +4 -0
- package/.pnpmrc.json +1 -0
- package/.wave-launch.sh +7 -0
- package/.workspace-marker +1 -0
- package/AGENTS.md +78 -0
- package/CHANGELOG.md +177 -0
- package/DESIGN.md +929 -0
- package/HEARTBEAT.md +7 -0
- package/IDENTITY.md +23 -0
- package/LICENSE.md +31 -0
- package/README.md +180 -0
- package/SOUL.md +36 -0
- package/TOOLS.md +40 -0
- package/USER.md +17 -0
- package/docs/README.md +107 -0
- package/docs/agents/wave-cont-eval-role.md +36 -0
- package/docs/agents/wave-cont-qa-role.md +52 -0
- package/docs/agents/wave-deploy-verifier-role.md +34 -0
- package/docs/agents/wave-design-role.md +47 -0
- package/docs/agents/wave-documentation-role.md +34 -0
- package/docs/agents/wave-infra-role.md +34 -0
- package/docs/agents/wave-integration-role.md +37 -0
- package/docs/agents/wave-launcher-role.md +41 -0
- package/docs/agents/wave-orchestrator-role.md +52 -0
- package/docs/agents/wave-planner-role.md +39 -0
- package/docs/agents/wave-security-role.md +40 -0
- package/docs/architecture/docx/README.md +10 -0
- package/docs/architecture/future/README.md +8 -0
- package/docs/architecture/ooxml-upgrade-analysis.md +134 -0
- package/docs/architecture/platform/shared-openxml-editor-platform.md +153 -0
- package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +187 -0
- package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +150 -0
- package/docs/comment-redline-overview.md +350 -0
- package/docs/concepts/context7-vs-skills.md +118 -0
- package/docs/concepts/operating-modes.md +91 -0
- package/docs/concepts/runtime-agnostic-orchestration.md +111 -0
- package/docs/concepts/what-is-a-wave.md +217 -0
- package/docs/context7/bundles.json +222 -0
- package/docs/context7/planner-agent/README.md +28 -0
- package/docs/context7/planner-agent/manifest.json +83 -0
- package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +3283 -0
- package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +1699 -0
- package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +2251 -0
- package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +1729 -0
- package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +3747 -0
- package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +1675 -0
- package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +1173 -0
- package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +5211 -0
- package/docs/context7/planner-agent/topics/planning-and-orchestration.md +24 -0
- package/docs/evals/arm-templates/README.md +13 -0
- package/docs/evals/arm-templates/full-wave.json +15 -0
- package/docs/evals/arm-templates/single-agent.json +15 -0
- package/docs/evals/benchmark-catalog.json +670 -0
- package/docs/evals/cases/README.md +47 -0
- package/docs/evals/cases/wave-blackboard-inbox-targeting.json +73 -0
- package/docs/evals/cases/wave-contradiction-conflict.json +104 -0
- package/docs/evals/cases/wave-expert-routing-preservation.json +69 -0
- package/docs/evals/cases/wave-hidden-profile-private-evidence.json +81 -0
- package/docs/evals/cases/wave-premature-closure-guard.json +71 -0
- package/docs/evals/cases/wave-silo-cross-agent-state.json +77 -0
- package/docs/evals/cases/wave-simultaneous-lockstep.json +92 -0
- package/docs/evals/external-benchmarks.json +85 -0
- package/docs/evals/external-command-config.sample.json +9 -0
- package/docs/evals/external-command-config.swe-bench-pro.json +8 -0
- package/docs/evals/pilots/README.md +47 -0
- package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +64 -0
- package/docs/evals/pilots/swe-bench-pro-public-pilot.json +111 -0
- package/docs/evals/wave-benchmark-program.md +302 -0
- package/docs/guides/planner.md +220 -0
- package/docs/guides/recommendations-0.8.9.md +133 -0
- package/docs/guides/signal-wrappers.md +165 -0
- package/docs/guides/terminal-surfaces.md +96 -0
- package/docs/image copy.png +0 -0
- package/docs/image.png +0 -0
- package/docs/images/image.png +0 -0
- package/docs/legal-feedback-architecture.md +498 -0
- package/docs/plans/component-cutover-matrix.json +1072 -0
- package/docs/plans/component-cutover-matrix.md +307 -0
- package/docs/plans/context7-wave-orchestrator.md +155 -0
- package/docs/plans/current-state.md +198 -0
- package/docs/plans/docx/README.md +9 -0
- package/docs/plans/examples/wave-benchmark-improvement.md +108 -0
- package/docs/plans/examples/wave-example-live-proof.md +435 -0
- package/docs/plans/master-plan.md +224 -0
- package/docs/plans/migration.md +538 -0
- package/docs/plans/operations/README.md +7 -0
- package/docs/plans/operations/wave-10-word-certification.md +87 -0
- package/docs/plans/operations/wave-8-railway-staging.md +153 -0
- package/docs/plans/operations/wave-9-manual-certification.md +73 -0
- package/docs/plans/platform/README.md +9 -0
- package/docs/plans/reference/legal-checklist-coverage.md +258 -0
- package/docs/plans/wave-orchestrator.md +423 -0
- package/docs/plans/waves/README.md +75 -0
- package/docs/plans/waves/completed/wave-0.md +195 -0
- package/docs/plans/waves/completed/wave-1.md +379 -0
- package/docs/plans/waves/completed/wave-10.md +670 -0
- package/docs/plans/waves/completed/wave-11.md +335 -0
- package/docs/plans/waves/completed/wave-12.md +417 -0
- package/docs/plans/waves/completed/wave-13.md +316 -0
- package/docs/plans/waves/completed/wave-14.md +319 -0
- package/docs/plans/waves/completed/wave-15.md +321 -0
- package/docs/plans/waves/completed/wave-16.md +316 -0
- package/docs/plans/waves/completed/wave-17.md +331 -0
- package/docs/plans/waves/completed/wave-18.md +328 -0
- package/docs/plans/waves/completed/wave-2.md +438 -0
- package/docs/plans/waves/completed/wave-3.md +435 -0
- package/docs/plans/waves/completed/wave-4.md +430 -0
- package/docs/plans/waves/completed/wave-5.md +430 -0
- package/docs/plans/waves/completed/wave-6.md +430 -0
- package/docs/plans/waves/completed/wave-7.md +526 -0
- package/docs/plans/waves/completed/wave-8.md +596 -0
- package/docs/plans/waves/completed/wave-9.md +552 -0
- package/docs/plans/waves/deferred/README.md +14 -0
- package/docs/plans/waves/deferred/encrypted-intake-contracts.md +282 -0
- package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +308 -0
- package/docs/plans/waves/deferred/wave-encrypted-intake.md +451 -0
- package/docs/plans/waves/design/README.md +5 -0
- package/docs/plans/waves/design/wave-1-a1.md +309 -0
- package/docs/plans/waves/reviews/README.md +5 -0
- package/docs/plans/waves/reviews/wave-0-cont-qa.md +151 -0
- package/docs/plans/waves/reviews/wave-1-cont-qa.md +46 -0
- package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +51 -0
- package/docs/plans/waves/reviews/wave-10-cont-qa.md +24 -0
- package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +46 -0
- package/docs/plans/waves/reviews/wave-10-performance-signoff.md +55 -0
- package/docs/plans/waves/reviews/wave-10-regression-proof.md +23 -0
- package/docs/plans/waves/reviews/wave-10-release-audit.md +31 -0
- package/docs/plans/waves/reviews/wave-10-service-proof.md +83 -0
- package/docs/plans/waves/reviews/wave-10-word-certification.md +31 -0
- package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +277 -0
- package/docs/plans/waves/reviews/wave-18-cont-qa.md +255 -0
- package/docs/plans/waves/reviews/wave-18-parity-proof.md +271 -0
- package/docs/plans/waves/reviews/wave-19-cont-qa.md +59 -0
- package/docs/plans/waves/reviews/wave-2-cont-qa.md +72 -0
- package/docs/plans/waves/reviews/wave-20-cont-qa.md +60 -0
- package/docs/plans/waves/reviews/wave-25-cont-qa.md +48 -0
- package/docs/plans/waves/reviews/wave-28-cont-qa.md +46 -0
- package/docs/plans/waves/reviews/wave-29-cont-qa.md +53 -0
- package/docs/plans/waves/reviews/wave-3-cont-qa.md +53 -0
- package/docs/plans/waves/reviews/wave-3-core-proof.md +77 -0
- package/docs/plans/waves/reviews/wave-3-validator-proof.md +73 -0
- package/docs/plans/waves/reviews/wave-32-cont-qa.md +43 -0
- package/docs/plans/waves/reviews/wave-33-cont-qa.md +526 -0
- package/docs/plans/waves/reviews/wave-34-cont-qa.md +100 -0
- package/docs/plans/waves/reviews/wave-35-cont-qa.md +145 -0
- package/docs/plans/waves/reviews/wave-4-cont-qa.md +47 -0
- package/docs/plans/waves/reviews/wave-4-structure-proof.md +69 -0
- package/docs/plans/waves/reviews/wave-5-comment-proof.md +158 -0
- package/docs/plans/waves/reviews/wave-5-cont-qa.md +68 -0
- package/docs/plans/waves/reviews/wave-6-cont-qa.md +416 -0
- package/docs/plans/waves/reviews/wave-6-redline-proof.md +130 -0
- package/docs/plans/waves/reviews/wave-7-cont-qa.md +82 -0
- package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +85 -0
- package/docs/plans/waves/reviews/wave-7-preservation-proof.md +119 -0
- package/docs/plans/waves/reviews/wave-7-trust-ux.md +87 -0
- package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +128 -0
- package/docs/plans/waves/reviews/wave-8-cont-qa.md +92 -0
- package/docs/plans/waves/reviews/wave-8-live-proof.md +140 -0
- package/docs/plans/waves/reviews/wave-8-security.md +47 -0
- package/docs/plans/waves/reviews/wave-9-editor-embedding.md +39 -0
- package/docs/plans/waves/reviews/wave-9-fixture-runner.md +56 -0
- package/docs/plans/waves/reviews/wave-9-live-proof.md +105 -0
- package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +152 -0
- package/docs/plans/waves/specs/README.md +5 -0
- package/docs/plans/waves/specs/wave-1-component-boundaries.md +322 -0
- package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +323 -0
- package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +339 -0
- package/docs/plans/waves/specs/wave-1-runtime-contracts.md +509 -0
- package/docs/plans/waves/wave-19.md +341 -0
- package/docs/plans/waves/wave-20.md +308 -0
- package/docs/plans/waves/wave-21.md +289 -0
- package/docs/plans/waves/wave-22.md +221 -0
- package/docs/plans/waves/wave-23.md +295 -0
- package/docs/plans/waves/wave-24.md +286 -0
- package/docs/plans/waves/wave-25.md +313 -0
- package/docs/plans/waves/wave-26.md +300 -0
- package/docs/plans/waves/wave-27.md +299 -0
- package/docs/plans/waves/wave-28.md +368 -0
- package/docs/plans/waves/wave-29.md +303 -0
- package/docs/plans/waves/wave-30.md +307 -0
- package/docs/plans/waves/wave-31.md +231 -0
- package/docs/plans/waves/wave-32.md +152 -0
- package/docs/plans/waves/wave-33.md +147 -0
- package/docs/plans/waves/wave-34.md +148 -0
- package/docs/plans/waves/wave-35.md +141 -0
- package/docs/plans/waves/wave-36.md +146 -0
- package/docs/plans/xlsx/README.md +14 -0
- package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +126 -0
- package/docs/reference/cli-reference.md +600 -0
- package/docs/reference/coordination-and-closure.md +487 -0
- package/docs/reference/deep-research-report (15).md +25 -0
- package/docs/reference/docx/README.md +10 -0
- package/docs/reference/legal-checklist.md +445 -0
- package/docs/reference/live-proof-waves.md +199 -0
- package/docs/reference/ooxml-compliance.md +129 -0
- package/docs/reference/ooxml-feature-parity-matrix.md +172 -0
- package/docs/reference/platform/shared-ooxml-platform-guidance.md +77 -0
- package/docs/reference/prototype-agent-prompt-legal-fidelity.md +155 -0
- package/docs/reference/public-api.md +456 -0
- package/docs/reference/repository-guidance.md +58 -0
- package/docs/reference/runtime-config/README.md +182 -0
- package/docs/reference/runtime-config/claude.md +110 -0
- package/docs/reference/runtime-config/codex.md +82 -0
- package/docs/reference/runtime-config/opencode.md +93 -0
- package/docs/reference/sample-waves.md +105 -0
- package/docs/reference/skills.md +237 -0
- package/docs/reference/templates/AGENTS.md +78 -0
- package/docs/reference/templates/HEARTBEAT.md +7 -0
- package/docs/reference/templates/IDENTITY.md +23 -0
- package/docs/reference/templates/SOUL.md +36 -0
- package/docs/reference/templates/TOOLS.md +40 -0
- package/docs/reference/templates/USER.md +17 -0
- package/docs/reference/wave-control.md +184 -0
- package/docs/reference/wave-planning-lessons.md +167 -0
- package/docs/reference/word-review-editor-frontend-architecture.md +479 -0
- package/docs/reference/word-review-editor-ux-guide.md +253 -0
- package/docs/reference/xlsx/xlsx-ooxml-compliance.md +137 -0
- package/docs/research/agent-context-sources.md +178 -0
- package/docs/research/coordination-failure-review.md +290 -0
- package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +2317 -0
- package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +219 -0
- package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +1112 -0
- package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +751 -0
- package/docs/research/xlsx/raw/README.md +13 -0
- package/docs/roadmap.md +174 -0
- package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +677 -0
- package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +274 -0
- package/docs/xlsx-react/README.md +38 -0
- package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +621 -0
- package/docs/xlsx-react/canonical-workbook-model-and-commands.md +948 -0
- package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +228 -0
- package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +809 -0
- package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +537 -0
- package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +520 -0
- package/docs/xlsx-react/xlsx-editor-research-pack.md +871 -0
- package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +436 -0
- package/docs/xlsx-react/xlsx-ooxml-compliance.md +320 -0
- package/examples/README.md +16 -0
- package/memory/MEMORY.md +24 -0
- package/package.json +63 -0
- package/pnpm-workspace.yaml +4 -0
- package/scripts/check-no-authored-js.sh +13 -0
- package/scripts/context7-api-check.sh +65 -0
- package/scripts/context7-export-env.sh +42 -0
- package/scripts/run-context7-mcp.sh +8 -0
- package/scripts/run-workspace-tests.sh +15 -0
- package/scripts/start-wave-10-local.sh +189 -0
- package/scripts/wave-agent-attach.sh +47 -0
- package/scripts/wave-auto-answer.sh +118 -0
- package/scripts/wave-dashboard-attach.sh +13 -0
- package/scripts/wave-launch.sh +273 -0
- package/scripts/wave-overnight-supervisor.sh +145 -0
- package/scripts/wave-status.sh +379 -0
- package/scripts/wave-watch.sh +231 -0
- package/services/README.md +17 -0
- package/services/openxml-validator/Dockerfile +29 -0
- package/services/openxml-validator/OpenXmlValidator.Api.csproj +12 -0
- package/services/openxml-validator/Program.cs +436 -0
- package/services/openxml-validator/README.md +152 -0
- package/services/openxml-validator/railway.json +16 -0
- package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +318 -0
- package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +1302 -0
- package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +546 -0
- package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +146 -0
- package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +2 -0
- package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +818 -0
- package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +229 -0
- package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +121 -0
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +21 -0
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +1 -0
- package/services/react-word-editor/Dockerfile +26 -0
- package/services/react-word-editor/README.md +254 -0
- package/services/react-word-editor/app/api/certification/route.ts +79 -0
- package/services/react-word-editor/app/api/demo-sessions/route.ts +109 -0
- package/services/react-word-editor/app/api/deploy-health/route.ts +23 -0
- package/services/react-word-editor/app/api/exports/[exportId]/route.ts +34 -0
- package/services/react-word-editor/app/api/exports/route.ts +81 -0
- package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +100 -0
- package/services/react-word-editor/app/api/health/route.ts +70 -0
- package/services/react-word-editor/app/api/runs/[runId]/route.ts +36 -0
- package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +85 -0
- package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +199 -0
- package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +45 -0
- package/services/react-word-editor/app/api/uploads/route.ts +70 -0
- package/services/react-word-editor/app/api/validate/route.ts +310 -0
- package/services/react-word-editor/app/certification/[runId]/page.tsx +14 -0
- package/services/react-word-editor/app/certification/page.tsx +32 -0
- package/services/react-word-editor/app/dashboard/page.tsx +7 -0
- package/services/react-word-editor/app/demo/page.tsx +30 -0
- package/services/react-word-editor/app/demo/prototype-client.tsx +1080 -0
- package/services/react-word-editor/app/editor/[sessionId]/page.tsx +33 -0
- package/services/react-word-editor/app/fixtures/page.tsx +7 -0
- package/services/react-word-editor/app/globals.css +121 -0
- package/services/react-word-editor/app/layout.tsx +32 -0
- package/services/react-word-editor/app/page.tsx +30 -0
- package/services/react-word-editor/app/runs/[runId]/page.tsx +34 -0
- package/services/react-word-editor/app/wave-10-word-review/page.tsx +7 -0
- package/services/react-word-editor/components/harness-control-bar.tsx +289 -0
- package/services/react-word-editor/components/harness-editor-session-client.tsx +1214 -0
- package/services/react-word-editor/components/harness-workspace-page.tsx +715 -0
- package/services/react-word-editor/components/reduced-motion-toggle.tsx +79 -0
- package/services/react-word-editor/components/workspace-certification-panel.tsx +307 -0
- package/services/react-word-editor/lib/certification-bundle.ts +796 -0
- package/services/react-word-editor/lib/certification-store.ts +661 -0
- package/services/react-word-editor/lib/demo-fixtures.test.mjs +195 -0
- package/services/react-word-editor/lib/demo-fixtures.ts +1519 -0
- package/services/react-word-editor/lib/editor-session-summary.test.mjs +68 -0
- package/services/react-word-editor/lib/editor-session-summary.ts +14 -0
- package/services/react-word-editor/lib/editor-session.ts +228 -0
- package/services/react-word-editor/lib/exports-route.test.mjs +32 -0
- package/services/react-word-editor/lib/harness-client.ts +347 -0
- package/services/react-word-editor/lib/harness-config.json +30 -0
- package/services/react-word-editor/lib/harness-config.test.mjs +31 -0
- package/services/react-word-editor/lib/harness-config.ts +21 -0
- package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +220 -0
- package/services/react-word-editor/lib/harness-editor-datastore.ts +161 -0
- package/services/react-word-editor/lib/private-mode.test.mjs +42 -0
- package/services/react-word-editor/lib/private-mode.ts +61 -0
- package/services/react-word-editor/lib/regression-report.test.mjs +352 -0
- package/services/react-word-editor/lib/regression-report.ts +896 -0
- package/services/react-word-editor/lib/run-artifacts.ts +934 -0
- package/services/react-word-editor/lib/run-history.ts +755 -0
- package/services/react-word-editor/lib/scenario-artifacts.test.mjs +41 -0
- package/services/react-word-editor/lib/scenario-artifacts.ts +44 -0
- package/services/react-word-editor/lib/storage.ts +953 -0
- package/services/react-word-editor/lib/validator-client.test.mjs +54 -0
- package/services/react-word-editor/lib/validator-client.ts +95 -0
- package/services/react-word-editor/lib/workspace-navigation.ts +79 -0
- package/services/react-word-editor/middleware.ts +35 -0
- package/services/react-word-editor/next-env.d.ts +6 -0
- package/services/react-word-editor/next.config.mjs +15 -0
- package/services/react-word-editor/package.json +38 -0
- package/services/react-word-editor/postcss.config.mjs +8 -0
- package/services/react-word-editor/railway.json +21 -0
- package/services/react-word-editor/scripts/wave-10-certification.mjs +101 -0
- package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +911 -0
- package/services/react-word-editor/tsconfig.json +39 -0
- package/services/react-word-editor/tsconfig.tsbuildinfo +1 -0
- package/skills/README.md +48 -0
- package/skills/domain-docx-compatibility/SKILL.md +44 -0
- package/skills/domain-docx-compatibility/skill.json +19 -0
- package/skills/domain-editor-architecture/SKILL.md +49 -0
- package/skills/domain-editor-architecture/skill.json +19 -0
- package/skills/domain-legal-review/SKILL.md +39 -0
- package/skills/domain-legal-review/skill.json +19 -0
- package/skills/provider-aws/SKILL.md +117 -0
- package/skills/provider-aws/adapters/claude.md +1 -0
- package/skills/provider-aws/adapters/codex.md +1 -0
- package/skills/provider-aws/references/service-verification.md +39 -0
- package/skills/provider-aws/skill.json +54 -0
- package/skills/provider-custom-deploy/SKILL.md +64 -0
- package/skills/provider-custom-deploy/skill.json +50 -0
- package/skills/provider-docker-compose/SKILL.md +96 -0
- package/skills/provider-docker-compose/adapters/local.md +1 -0
- package/skills/provider-docker-compose/skill.json +53 -0
- package/skills/provider-github-release/SKILL.md +121 -0
- package/skills/provider-github-release/adapters/claude.md +1 -0
- package/skills/provider-github-release/adapters/codex.md +1 -0
- package/skills/provider-github-release/skill.json +55 -0
- package/skills/provider-kubernetes/SKILL.md +143 -0
- package/skills/provider-kubernetes/adapters/claude.md +1 -0
- package/skills/provider-kubernetes/adapters/codex.md +1 -0
- package/skills/provider-kubernetes/references/kubectl-patterns.md +58 -0
- package/skills/provider-kubernetes/skill.json +52 -0
- package/skills/provider-railway/SKILL.md +123 -0
- package/skills/provider-railway/adapters/claude.md +1 -0
- package/skills/provider-railway/adapters/codex.md +1 -0
- package/skills/provider-railway/adapters/local.md +1 -0
- package/skills/provider-railway/adapters/opencode.md +1 -0
- package/skills/provider-railway/references/verification-commands.md +39 -0
- package/skills/provider-railway/skill.json +71 -0
- package/skills/provider-ssh-manual/SKILL.md +97 -0
- package/skills/provider-ssh-manual/skill.json +54 -0
- package/skills/repo-coding-rules/SKILL.md +55 -0
- package/skills/repo-coding-rules/skill.json +34 -0
- package/skills/role-cont-eval/SKILL.md +91 -0
- package/skills/role-cont-eval/adapters/codex.md +1 -0
- package/skills/role-cont-eval/skill.json +36 -0
- package/skills/role-cont-qa/SKILL.md +100 -0
- package/skills/role-cont-qa/adapters/claude.md +1 -0
- package/skills/role-cont-qa/skill.json +36 -0
- package/skills/role-deploy/SKILL.md +97 -0
- package/skills/role-deploy/skill.json +36 -0
- package/skills/role-design/SKILL.md +50 -0
- package/skills/role-design/skill.json +36 -0
- package/skills/role-documentation/SKILL.md +76 -0
- package/skills/role-documentation/skill.json +36 -0
- package/skills/role-implementation/SKILL.md +45 -0
- package/skills/role-implementation/skill.json +36 -0
- package/skills/role-infra/SKILL.md +81 -0
- package/skills/role-infra/skill.json +36 -0
- package/skills/role-integration/SKILL.md +91 -0
- package/skills/role-integration/skill.json +36 -0
- package/skills/role-planner/SKILL.md +39 -0
- package/skills/role-planner/skill.json +21 -0
- package/skills/role-research/SKILL.md +65 -0
- package/skills/role-research/skill.json +36 -0
- package/skills/role-security/SKILL.md +60 -0
- package/skills/role-security/skill.json +36 -0
- package/skills/runtime-claude/SKILL.md +66 -0
- package/skills/runtime-claude/skill.json +36 -0
- package/skills/runtime-codex/SKILL.md +58 -0
- package/skills/runtime-codex/skill.json +36 -0
- package/skills/runtime-local/SKILL.md +46 -0
- package/skills/runtime-local/skill.json +36 -0
- package/skills/runtime-opencode/SKILL.md +58 -0
- package/skills/runtime-opencode/skill.json +36 -0
- package/skills/signal-hygiene/SKILL.md +51 -0
- package/skills/signal-hygiene/skill.json +20 -0
- package/skills/tui-design/SKILL.md +77 -0
- package/skills/tui-design/references/tui-design.md +259 -0
- package/skills/tui-design/skill.json +36 -0
- package/skills/wave-core/SKILL.md +141 -0
- package/skills/wave-core/references/marker-syntax.md +70 -0
- package/skills/wave-core/skill.json +35 -0
- package/src/README.md +85 -0
- package/src/api/README.md +22 -0
- package/src/api/public-types.ts +525 -0
- package/src/component-inventory.md +99 -0
- package/src/core/README.md +10 -0
- package/src/core/commands/README.md +3 -0
- package/src/core/commands/formatting-commands.ts +161 -0
- package/src/core/commands/image-commands.ts +144 -0
- package/src/core/commands/index.ts +1013 -0
- package/src/core/commands/list-commands.ts +370 -0
- package/src/core/commands/review-commands.ts +108 -0
- package/src/core/commands/text-commands.ts +119 -0
- package/src/core/schema/README.md +3 -0
- package/src/core/schema/text-schema.ts +512 -0
- package/src/core/selection/README.md +3 -0
- package/src/core/selection/mapping.ts +238 -0
- package/src/core/selection/review-anchors.ts +94 -0
- package/src/core/state/README.md +3 -0
- package/src/core/state/editor-state.ts +580 -0
- package/src/core/state/text-transaction.ts +276 -0
- package/src/formats/xlsx/io/parse-shared-strings.ts +41 -0
- package/src/formats/xlsx/io/parse-sheet.ts +289 -0
- package/src/formats/xlsx/io/parse-styles.ts +57 -0
- package/src/formats/xlsx/io/parse-workbook.ts +75 -0
- package/src/formats/xlsx/io/xlsx-session.ts +306 -0
- package/src/formats/xlsx/model/cell.ts +189 -0
- package/src/formats/xlsx/model/sheet.ts +244 -0
- package/src/formats/xlsx/model/styles.ts +118 -0
- package/src/formats/xlsx/model/workbook.ts +449 -0
- package/src/io/README.md +10 -0
- package/src/io/docx-session.ts +1763 -0
- package/src/io/export/README.md +3 -0
- package/src/io/export/export-session.ts +165 -0
- package/src/io/export/minimal-docx.ts +115 -0
- package/src/io/export/reattach-preserved-parts.ts +54 -0
- package/src/io/export/serialize-comments.ts +876 -0
- package/src/io/export/serialize-footnotes.ts +217 -0
- package/src/io/export/serialize-headers-footers.ts +200 -0
- package/src/io/export/serialize-main-document.ts +982 -0
- package/src/io/export/serialize-numbering.ts +97 -0
- package/src/io/export/serialize-revisions.ts +389 -0
- package/src/io/export/serialize-runtime-revisions.ts +265 -0
- package/src/io/export/serialize-tables.ts +147 -0
- package/src/io/export/split-review-boundaries.ts +194 -0
- package/src/io/normalize/README.md +3 -0
- package/src/io/normalize/normalize-text.ts +437 -0
- package/src/io/ooxml/README.md +3 -0
- package/src/io/ooxml/parse-comments.ts +779 -0
- package/src/io/ooxml/parse-complex-content.ts +287 -0
- package/src/io/ooxml/parse-fields.ts +438 -0
- package/src/io/ooxml/parse-footnotes.ts +403 -0
- package/src/io/ooxml/parse-headers-footers.ts +483 -0
- package/src/io/ooxml/parse-inline-media.ts +431 -0
- package/src/io/ooxml/parse-main-document.ts +1846 -0
- package/src/io/ooxml/parse-numbering.ts +425 -0
- package/src/io/ooxml/parse-revisions.ts +658 -0
- package/src/io/ooxml/parse-shapes.ts +271 -0
- package/src/io/ooxml/parse-tables.ts +568 -0
- package/src/io/ooxml/parse-theme.ts +314 -0
- package/src/io/ooxml/part-manifest.ts +136 -0
- package/src/io/ooxml/revision-boundaries.ts +351 -0
- package/src/io/opc/README.md +3 -0
- package/src/io/opc/corrupt-package.ts +166 -0
- package/src/io/opc/docx-package.ts +74 -0
- package/src/io/opc/package-reader.ts +320 -0
- package/src/io/opc/package-writer.ts +273 -0
- package/src/model/README.md +3 -0
- package/src/model/canonical-document.ts +1911 -0
- package/src/model/cds-1.0.0.ts +196 -0
- package/src/model/snapshot.ts +393 -0
- package/src/preservation/README.md +3 -0
- package/src/preservation/markup-compatibility.ts +48 -0
- package/src/preservation/opaque-fragment-store.ts +89 -0
- package/src/preservation/opaque-region.ts +233 -0
- package/src/preservation/package-preservation.ts +120 -0
- package/src/preservation/preserved-part-manifest.ts +56 -0
- package/src/preservation/relationship-retention.ts +57 -0
- package/src/preservation/store.ts +185 -0
- package/src/review/README.md +16 -0
- package/src/review/store/README.md +3 -0
- package/src/review/store/comment-anchors.ts +70 -0
- package/src/review/store/comment-remapping.ts +154 -0
- package/src/review/store/comment-store.ts +331 -0
- package/src/review/store/comment-thread.ts +109 -0
- package/src/review/store/revision-actions.ts +394 -0
- package/src/review/store/revision-store.ts +303 -0
- package/src/review/store/revision-types.ts +168 -0
- package/src/review/store/runtime-comment-store.ts +43 -0
- package/src/runtime/README.md +3 -0
- package/src/runtime/ai-action-policy.ts +764 -0
- package/src/runtime/document-runtime.ts +969 -0
- package/src/runtime/read-only-diagnostics-runtime.ts +232 -0
- package/src/runtime/review-runtime.ts +44 -0
- package/src/runtime/revision-runtime.ts +107 -0
- package/src/runtime/session-capabilities.ts +138 -0
- package/src/runtime/surface-projection.ts +570 -0
- package/src/runtime/table-commands.ts +84 -0
- package/src/runtime/table-schema.ts +125 -0
- package/src/ui/README.md +30 -0
- package/src/ui/WordReviewEditor.tsx +1283 -0
- package/src/ui/comments/README.md +3 -0
- package/src/ui/compatibility/README.md +3 -0
- package/src/ui/editor-surface/README.md +3 -0
- package/src/ui/headless/comment-decoration-model.ts +124 -0
- package/src/ui/headless/revision-decoration-model.ts +128 -0
- package/src/ui/headless/selection-helpers.ts +34 -0
- package/src/ui/headless/use-editor-keyboard.ts +98 -0
- package/src/ui/review/README.md +3 -0
- package/src/ui/shared/revision-filters.ts +31 -0
- package/src/ui/status/README.md +3 -0
- package/src/ui/theme/README.md +3 -0
- package/src/ui/toolbar/README.md +3 -0
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +48 -0
- package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +44 -0
- package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +58 -0
- package/src/ui-tailwind/chrome/use-before-unload.ts +20 -0
- package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +139 -0
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +98 -0
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +123 -0
- package/src/ui-tailwind/editor-surface/pm-schema.ts +452 -0
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +327 -0
- package/src/ui-tailwind/editor-surface/search-plugin.ts +157 -0
- package/src/ui-tailwind/editor-surface/tw-caret.tsx +12 -0
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +150 -0
- package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +118 -0
- package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +52 -0
- package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +151 -0
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +215 -0
- package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +111 -0
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +108 -0
- package/src/ui-tailwind/index.ts +61 -0
- package/src/ui-tailwind/review/tw-comment-sidebar.tsx +276 -0
- package/src/ui-tailwind/review/tw-health-panel.tsx +120 -0
- package/src/ui-tailwind/review/tw-review-rail.tsx +120 -0
- package/src/ui-tailwind/review/tw-revision-sidebar.tsx +164 -0
- package/src/ui-tailwind/status/tw-status-bar.tsx +58 -0
- package/src/ui-tailwind/theme/editor-theme.css +190 -0
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +48 -0
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +231 -0
- package/src/ui-tailwind/tw-review-workspace.tsx +140 -0
- package/src/validation/README.md +3 -0
- package/src/validation/compatibility-engine.ts +317 -0
- package/src/validation/compatibility-report.ts +160 -0
- package/src/validation/diagnostics.ts +203 -0
- package/src/validation/import-diagnostics.ts +128 -0
- package/src/validation/low-priority-word-surfaces.ts +373 -0
- package/test/README.md +16 -0
- package/test/core/formatting-commands.test.ts +285 -0
- package/test/core/image-commands.test.ts +298 -0
- package/test/core/mapping.test.ts +186 -0
- package/test/core/text-commands.test.ts +176 -0
- package/test/fixtures/docx/F01-basic-contract.docx +0 -0
- package/test/fixtures/docx/F01-basic-contract.md +33 -0
- package/test/fixtures/docx/F02-headings-styles.docx +0 -0
- package/test/fixtures/docx/F02-headings-styles.md +33 -0
- package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
- package/test/fixtures/docx/F03-legal-outline-numbering.md +34 -0
- package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
- package/test/fixtures/docx/F04-restart-numbering-schedules.md +33 -0
- package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
- package/test/fixtures/docx/F05-table-heavy-agreement.md +34 -0
- package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
- package/test/fixtures/docx/F06-merged-cells-signature-table.md +34 -0
- package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
- package/test/fixtures/docx/F07-inline-images-exhibit.md +34 -0
- package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
- package/test/fixtures/docx/F08-hyperlinks.md +33 -0
- package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
- package/test/fixtures/docx/F09-comments-single-paragraph.md +33 -0
- package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
- package/test/fixtures/docx/F10-threaded-comments-resolve.md +33 -0
- package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
- package/test/fixtures/docx/F11-redlines-basic.md +33 -0
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +33 -0
- package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
- package/test/fixtures/docx/F13-comments-on-deleted-text.md +33 -0
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +33 -0
- package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
- package/test/fixtures/docx/F15-sections-headers-footers.md +33 -0
- package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
- package/test/fixtures/docx/F16-footnotes-endnotes.md +33 -0
- package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
- package/test/fixtures/docx/F17-fields-and-toc.md +33 -0
- package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
- package/test/fixtures/docx/F18-content-controls-template.md +33 -0
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +35 -0
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +33 -0
- package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
- package/test/fixtures/docx/F21-malformed-broken-docx.md +33 -0
- package/test/fixtures/docx/README.md +74 -0
- package/test/fixtures/docx/certification-manifest.json +104 -0
- package/test/fixtures/docx/fixtures.manifest.json +196 -0
- package/test/fixtures/encrypted-docx/README.md +27 -0
- package/test/fixtures/encrypted-docx/certification-manifest.json +9 -0
- package/test/fixtures/encrypted-docx/fixtures.manifest.json +47 -0
- package/test/fixtures/scenarios/docx/README.md +25 -0
- package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
- package/test/fixtures/scenarios/docx/S01-sow-template.md +30 -0
- package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.docx +0 -0
- package/test/fixtures/scenarios/docx/S02-bw-partner-user-licence-agreement-redlines.md +32 -0
- package/test/fixtures/scenarios/docx/scenario-manifest.json +53 -0
- package/test/formats/xlsx/io/xlsx-import.test.ts +766 -0
- package/test/formats/xlsx/model/workbook.test.ts +669 -0
- package/test/helpers/dom-setup.ts +124 -0
- package/test/io/comment-roundtrip.test.ts +272 -0
- package/test/io/complex-content-roundtrip.test.ts +632 -0
- package/test/io/docx-compatibility-regression.test.ts +199 -0
- package/test/io/docx-session.test.ts +1495 -0
- package/test/io/footnotes-roundtrip.test.ts +318 -0
- package/test/io/headers-footers-roundtrip.test.ts +547 -0
- package/test/io/numbering-roundtrip.test.ts +234 -0
- package/test/io/package-reader.test.ts +199 -0
- package/test/io/paragraph-properties-roundtrip.test.ts +129 -0
- package/test/io/preserved-package-roundtrip.test.ts +365 -0
- package/test/io/property-completeness.test.ts +292 -0
- package/test/io/revision-roundtrip.test.ts +347 -0
- package/test/io/structural-blocks.test.ts +202 -0
- package/test/io/table-media-roundtrip.test.ts +448 -0
- package/test/io/table-properties-roundtrip.test.ts +569 -0
- package/test/io/table-roundtrip.test.ts +302 -0
- package/test/io/text-roundtrip.test.ts +344 -0
- package/test/model/canonical-document.test.ts +285 -0
- package/test/preservation/opaque-fragment-store.test.ts +121 -0
- package/test/preservation/package-preservation.test.ts +395 -0
- package/test/preservation/store.test.ts +84 -0
- package/test/review/comment-remapping.test.ts +220 -0
- package/test/review/comment-store.test.ts +180 -0
- package/test/review/move-revisions.test.ts +143 -0
- package/test/review/property-change-revisions.test.ts +225 -0
- package/test/review/revision-actions.test.ts +330 -0
- package/test/review/revision-store.test.ts +193 -0
- package/test/runtime/session-capabilities.test.ts +260 -0
- package/test/runtime/table-commands.test.ts +356 -0
- package/test/runtime/table-schema.test.ts +221 -0
- package/test/runtime/tracked-changes-toggle.test.ts +107 -0
- package/test/ui/comment-review-surface.test.tsx +114 -0
- package/test/ui/reduced-motion-toggle.test.tsx +137 -0
- package/test/ui/word-review-editor.imported-scenarios.test.tsx +169 -0
- package/test/ui/word-review-editor.interaction.test.tsx +1198 -0
- package/test/ui/word-review-editor.test.js +188 -0
- package/test/ui/word-review-editor.test.tsx +280 -0
- package/test/ui-tailwind/search-plugin.test.ts +286 -0
- package/test/validation/compatibility-engine.test.ts +336 -0
- package/test/validation/compatibility-report.test.ts +189 -0
- package/test/validation/low-priority-word-surfaces.test.ts +282 -0
- package/test/validation/malformed-doc.test.ts +113 -0
- package/test-results/.last-run.json +4 -0
- package/wave.config.json +406 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Canonical Workbook Model And Commands
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
- Planned canonical model for the future `xlsx` runtime.
|
|
6
|
+
- Not implemented in source today.
|
|
7
|
+
- Intended to align the xlsx planning work with the current repo's runtime-first, command-driven architecture.
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
This document defines what should remain canonical in a spreadsheet runtime and what should remain derived.
|
|
12
|
+
|
|
13
|
+
The goal is to keep the workbook model:
|
|
14
|
+
|
|
15
|
+
- sparse and serializable
|
|
16
|
+
- safe for import and export
|
|
17
|
+
- compatible with command and transaction boundaries
|
|
18
|
+
- honest about preserve-only content
|
|
19
|
+
|
|
20
|
+
## Core Rules
|
|
21
|
+
|
|
22
|
+
- The workbook runtime owns the only canonical state.
|
|
23
|
+
- React renders runtime projections and never mutates canonical workbook state directly.
|
|
24
|
+
- Commands produce transactions, mappings, effects, and history boundaries.
|
|
25
|
+
- Structural edits must remap anchors, ranges, comments, merges, and references.
|
|
26
|
+
- Unsupported but preservable workbook content must stay in preservation state, not be flattened into "best effort" workbook data.
|
|
27
|
+
|
|
28
|
+
## Canonical Stores
|
|
29
|
+
|
|
30
|
+
The planned xlsx runtime should keep the same broad separation of concerns as the current docx runtime:
|
|
31
|
+
|
|
32
|
+
- content model
|
|
33
|
+
- review or annotation model
|
|
34
|
+
- preservation model
|
|
35
|
+
- diagnostics and compatibility state
|
|
36
|
+
|
|
37
|
+
### Content Model
|
|
38
|
+
|
|
39
|
+
The content model should own:
|
|
40
|
+
|
|
41
|
+
- workbook metadata
|
|
42
|
+
- sheet registry and ordering
|
|
43
|
+
- sparse cell storage
|
|
44
|
+
- formulas and cached values
|
|
45
|
+
- row and column properties
|
|
46
|
+
- merges
|
|
47
|
+
- workbook-level named items
|
|
48
|
+
- style references and workbook-wide style registries
|
|
49
|
+
|
|
50
|
+
### Annotation Model
|
|
51
|
+
|
|
52
|
+
The annotation model should own:
|
|
53
|
+
|
|
54
|
+
- notes or legacy comments if supported
|
|
55
|
+
- future threaded comment preservation data
|
|
56
|
+
- cell or range anchors for annotations
|
|
57
|
+
|
|
58
|
+
### Preservation Model
|
|
59
|
+
|
|
60
|
+
The preservation model should own:
|
|
61
|
+
|
|
62
|
+
- unknown parts and relationships
|
|
63
|
+
- preserve-only workbook features
|
|
64
|
+
- extension markup and compatibility payloads
|
|
65
|
+
- locked-region metadata required to explain blocked edits
|
|
66
|
+
|
|
67
|
+
## Sparse Workbook Shape
|
|
68
|
+
|
|
69
|
+
The canonical workbook should be sparse by default.
|
|
70
|
+
|
|
71
|
+
That means:
|
|
72
|
+
|
|
73
|
+
- empty cells are omitted from canonical storage
|
|
74
|
+
- non-default row and column metadata is stored sparsely
|
|
75
|
+
- merges, notes, hyperlinks, and other anchored objects are stored as separate collections
|
|
76
|
+
|
|
77
|
+
This avoids pretending a spreadsheet is a dense DOM-shaped tree.
|
|
78
|
+
|
|
79
|
+
## Cell Value Strategy
|
|
80
|
+
|
|
81
|
+
Canonical cell state should preserve semantic type without coercing everything into a single JavaScript value shape.
|
|
82
|
+
|
|
83
|
+
Minimum value families:
|
|
84
|
+
|
|
85
|
+
- empty
|
|
86
|
+
- text
|
|
87
|
+
- number
|
|
88
|
+
- boolean
|
|
89
|
+
- error
|
|
90
|
+
- formula
|
|
91
|
+
- rich or formatted text if supported later, otherwise preserve-only
|
|
92
|
+
|
|
93
|
+
The runtime may maintain derived caches for display or performance, but canonical state must remain export-safe.
|
|
94
|
+
|
|
95
|
+
## Formula Strategy
|
|
96
|
+
|
|
97
|
+
Formulas should be first-class runtime entities even if the editor does not ship a full Excel-compatible calculation engine.
|
|
98
|
+
|
|
99
|
+
The canonical model should retain:
|
|
100
|
+
|
|
101
|
+
- formula text
|
|
102
|
+
- reference tokens needed for remapping
|
|
103
|
+
- cached value when present
|
|
104
|
+
- enough structure to support safe row, column, and range edits
|
|
105
|
+
|
|
106
|
+
If a formula family cannot be remapped safely, the relevant structural edit should warn, block, or remain preserve-only.
|
|
107
|
+
|
|
108
|
+
## Selection And Anchor Strategy
|
|
109
|
+
|
|
110
|
+
Selection should be grid-native, not text-editor-shaped.
|
|
111
|
+
|
|
112
|
+
Minimum runtime selection surfaces:
|
|
113
|
+
|
|
114
|
+
- active sheet
|
|
115
|
+
- active cell
|
|
116
|
+
- primary range
|
|
117
|
+
- optional multi-range support
|
|
118
|
+
- selection mode for cells, rows, columns, or full-sheet operations
|
|
119
|
+
|
|
120
|
+
Mapped anchors should also support:
|
|
121
|
+
|
|
122
|
+
- notes or comments
|
|
123
|
+
- hyperlinks
|
|
124
|
+
- preserve-only object references
|
|
125
|
+
- future named ranges and table surfaces
|
|
126
|
+
|
|
127
|
+
## Command And Transaction Model
|
|
128
|
+
|
|
129
|
+
Every mutation should flow through typed spreadsheet commands.
|
|
130
|
+
|
|
131
|
+
Representative command families:
|
|
132
|
+
|
|
133
|
+
- set cell value
|
|
134
|
+
- set formula
|
|
135
|
+
- apply styles
|
|
136
|
+
- insert or delete rows
|
|
137
|
+
- insert or delete columns
|
|
138
|
+
- merge or unmerge cells
|
|
139
|
+
- add, rename, reorder, or delete sheets
|
|
140
|
+
- freeze or clear panes
|
|
141
|
+
- add or edit supported note surfaces
|
|
142
|
+
|
|
143
|
+
Each transaction should produce:
|
|
144
|
+
|
|
145
|
+
- next workbook state
|
|
146
|
+
- mapping data for remapping selections and anchored objects
|
|
147
|
+
- effects for UI or host notifications
|
|
148
|
+
- history boundary metadata
|
|
149
|
+
|
|
150
|
+
## Preserve-Only Boundary
|
|
151
|
+
|
|
152
|
+
The canonical model must not over-claim ownership.
|
|
153
|
+
|
|
154
|
+
Examples of likely preserve-only workbook surfaces in early xlsx work:
|
|
155
|
+
|
|
156
|
+
- threaded comments
|
|
157
|
+
- pivot caches and pivot tables
|
|
158
|
+
- charts and complex drawing graphs
|
|
159
|
+
- advanced extension lists
|
|
160
|
+
- rich value families
|
|
161
|
+
- features that require rewriting unknown extension parts
|
|
162
|
+
|
|
163
|
+
Those surfaces should stay in preservation state until they have package-backed proof and Excel reopen evidence.
|
|
164
|
+
|
|
165
|
+
## Relationship To The Shared Platform
|
|
166
|
+
|
|
167
|
+
This doc intentionally stops at workbook semantics.
|
|
168
|
+
|
|
169
|
+
The following concerns belong to the shared platform instead:
|
|
170
|
+
|
|
171
|
+
- OPC package reading and writing
|
|
172
|
+
- preserved part reattachment
|
|
173
|
+
- compatibility taxonomy and export blockers
|
|
174
|
+
- validator service integration
|
|
175
|
+
- snapshot and persistence doctrine
|
|
176
|
+
|
|
177
|
+
See `docs/architecture/platform/shared-openxml-editor-platform.md` for that shared layer.
|
|
178
|
+
|
|
179
|
+
## Source Research Mapping
|
|
180
|
+
|
|
181
|
+
This canonical doc is derived from research in:
|
|
182
|
+
|
|
183
|
+
- `docs/xlsx-react/canonical-workbook-model-and-commands.md`
|
|
184
|
+
- `docs/xlsx-react/spreadsheet-editor-component-architecture.md`
|
|
185
|
+
- `docs/xlsx-react/spreadsheet-editor-frontend-architecture.md`
|
|
186
|
+
|
|
187
|
+
The research sources remain useful design rationale, but this file is the repo-aligned planned canonical model reference.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Spreadsheet Editor Frontend Architecture
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
- Planned canonical architecture for the future `xlsx` runtime.
|
|
6
|
+
- No `SpreadsheetEditor` implementation is shipped in this repo today.
|
|
7
|
+
- This doc translates the strongest `docs/xlsx-react` research into a repo-aligned architecture that matches the current runtime-first philosophy without pretending the source already exists.
|
|
8
|
+
|
|
9
|
+
## Role In The Repo
|
|
10
|
+
|
|
11
|
+
This document is the `xlsx` sibling to the current docx frontend architecture.
|
|
12
|
+
|
|
13
|
+
Use it together with:
|
|
14
|
+
|
|
15
|
+
- `docs/architecture/platform/shared-openxml-editor-platform.md`
|
|
16
|
+
- `docs/architecture/xlsx/canonical-workbook-model-and-commands.md`
|
|
17
|
+
- `docs/reference/xlsx/xlsx-ooxml-compliance.md`
|
|
18
|
+
- `docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md`
|
|
19
|
+
|
|
20
|
+
## Frontend Doctrine
|
|
21
|
+
|
|
22
|
+
- The workbook runtime owns canonical truth.
|
|
23
|
+
- React renders runtime projections and dispatches commands.
|
|
24
|
+
- The grid surface is spreadsheet-native and performance-driven.
|
|
25
|
+
- UI state remains presentation-only: tabs, panel visibility, theme, and transient edit buffers.
|
|
26
|
+
- Export safety and preserve-only states are visible in the UI instead of being hidden behind implicit behavior.
|
|
27
|
+
|
|
28
|
+
## Editor Shape
|
|
29
|
+
|
|
30
|
+
The target public surface is a single embeddable component:
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<SpreadsheetEditor />
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
That component should remain uncontrolled by default, matching the current `WordReviewEditor` philosophy:
|
|
37
|
+
|
|
38
|
+
- host provides initial source or snapshot
|
|
39
|
+
- runtime owns the live session
|
|
40
|
+
- host receives typed events, warnings, errors, snapshots, and exports
|
|
41
|
+
|
|
42
|
+
## Rendering Stack
|
|
43
|
+
|
|
44
|
+
The spreadsheet editor should keep the same broad discipline as the docx runtime while using spreadsheet-appropriate rendering:
|
|
45
|
+
|
|
46
|
+
- React shell for layout, panels, and tool surfaces
|
|
47
|
+
- imperative or headless grid surface controller for scrolling, hit-testing, and keyboard flow
|
|
48
|
+
- runtime-owned render snapshot consumed through `useSyncExternalStore`
|
|
49
|
+
- token-driven theme system rather than one-off inline styling
|
|
50
|
+
|
|
51
|
+
## High-Level Component Hierarchy
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
SpreadsheetEditor
|
|
55
|
+
└── SpreadsheetWorkspace
|
|
56
|
+
├── TopBar
|
|
57
|
+
│ ├── NameBox
|
|
58
|
+
│ ├── FormulaBar
|
|
59
|
+
│ └── Toolbar
|
|
60
|
+
├── GridViewport
|
|
61
|
+
│ ├── GridSurfaceHost
|
|
62
|
+
│ └── GridOverlays
|
|
63
|
+
├── RightRail
|
|
64
|
+
│ ├── CommentsOrNotes
|
|
65
|
+
│ └── HealthPanel
|
|
66
|
+
├── SheetTabs
|
|
67
|
+
└── StatusBar
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Runtime And UI Boundary
|
|
71
|
+
|
|
72
|
+
The boundary should match the current repo's strongest invariant:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
UI -> Command -> Transaction -> State Update -> Render
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Rules:
|
|
79
|
+
|
|
80
|
+
- React never owns workbook truth.
|
|
81
|
+
- The grid surface never bypasses the runtime.
|
|
82
|
+
- Formula edits, range edits, merge edits, and structural sheet edits all flow through typed commands.
|
|
83
|
+
- Render snapshots may be denormalized for visible regions, but persisted snapshots stay separate.
|
|
84
|
+
|
|
85
|
+
## Module Boundaries
|
|
86
|
+
|
|
87
|
+
Target source ownership for the `xlsx` frontend should stay explicit:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
src/formats/xlsx/
|
|
91
|
+
api/
|
|
92
|
+
model/
|
|
93
|
+
core/
|
|
94
|
+
commands/
|
|
95
|
+
selection/
|
|
96
|
+
formulas/
|
|
97
|
+
grid-math/
|
|
98
|
+
io/
|
|
99
|
+
preservation/
|
|
100
|
+
validation/
|
|
101
|
+
runtime/
|
|
102
|
+
ui/
|
|
103
|
+
headless/
|
|
104
|
+
grid-surface/
|
|
105
|
+
react/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
This is a target-state layout, not a claim that these directories already exist.
|
|
109
|
+
|
|
110
|
+
## Capability Model
|
|
111
|
+
|
|
112
|
+
The editor should derive session capabilities from runtime state rather than local UI guesses.
|
|
113
|
+
|
|
114
|
+
Minimum capability surfaces:
|
|
115
|
+
|
|
116
|
+
- `canEdit`
|
|
117
|
+
- `canUndo`
|
|
118
|
+
- `canRedo`
|
|
119
|
+
- `canExport`
|
|
120
|
+
- `exportBlocked`
|
|
121
|
+
- `preserveOnlyCount`
|
|
122
|
+
- `unsupportedFatalCount`
|
|
123
|
+
- `canEditFormulas`
|
|
124
|
+
|
|
125
|
+
## UX Honesty Rules
|
|
126
|
+
|
|
127
|
+
- Spreadsheet features are either `supported-roundtrip`, `preserve-only`, or `unsupported-fatal`.
|
|
128
|
+
- Preserve-only content must remain visible and explainable.
|
|
129
|
+
- Locked or blocked regions must surface through the health rail and status bar.
|
|
130
|
+
- Unsupported structures must not be rewritten optimistically.
|
|
131
|
+
|
|
132
|
+
## Current Scope Boundary
|
|
133
|
+
|
|
134
|
+
This architecture is intentionally for the future `xlsx` runtime only.
|
|
135
|
+
|
|
136
|
+
It does not change:
|
|
137
|
+
|
|
138
|
+
- the current `WordReviewEditor` public API
|
|
139
|
+
- the docx-specific ProseMirror editing surface
|
|
140
|
+
- the current docx wave maturity line
|
|
141
|
+
|
|
142
|
+
## Source Research Mapping
|
|
143
|
+
|
|
144
|
+
This canonical doc is derived from research in:
|
|
145
|
+
|
|
146
|
+
- `docs/xlsx-react/spreadsheet-editor-frontend-architecture.md`
|
|
147
|
+
- `docs/xlsx-react/spreadsheet-editor-component-architecture.md`
|
|
148
|
+
- `docs/xlsx-react/canonical-workbook-model-and-commands.md`
|
|
149
|
+
|
|
150
|
+
The research papers remain useful source material, but this file is the repo-aligned planned architecture reference.
|