@beyondwork/docx-react-component 1.0.0 → 1.0.2
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/README.md +44 -104
- package/package.json +66 -15
- package/src/api/public-types.ts +1 -1
- package/src/compare/diff-engine.ts +530 -0
- package/src/compare/export-redlines.ts +162 -0
- package/src/compare/snapshot.ts +37 -0
- package/src/core/commands/index.ts +1 -1
- package/src/core/state/editor-state.ts +2 -2
- package/src/index.ts +45 -0
- package/src/legal/bookmarks.ts +196 -0
- package/src/legal/cross-references.ts +356 -0
- package/src/legal/defined-terms.ts +203 -0
- package/src/runtime/document-runtime.ts +3 -5
- package/src/runtime/table-commands.ts +4 -1
- package/src/runtime/table-schema.ts +17 -2
- package/src/runtime/virtualized-rendering.ts +258 -0
- package/src/ui/WordReviewEditor.tsx +256 -35
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +2 -2
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +16 -2
- package/.codex/config.toml +0 -5
- package/.corepack/v1/pnpm/10.30.3/.corepack +0 -1
- package/.corepack/v1/pnpm/10.30.3/LICENSE +0 -22
- package/.corepack/v1/pnpm/10.30.3/README.md +0 -240
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp +0 -6
- package/.corepack/v1/pnpm/10.30.3/dist/node-gyp-bin/node-gyp.cmd +0 -5
- package/.corepack/v1/pnpm/10.30.3/dist/pnpm.cjs +0 -195400
- package/.corepack/v1/pnpm/10.30.3/dist/pnpmrc +0 -2
- 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 +0 -31
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.fish +0 -22
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.ps1 +0 -193
- package/.corepack/v1/pnpm/10.30.3/dist/templates/completion.zsh +0 -27
- 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 +0 -10119
- package/.corepack/v1/pnpm/10.30.3/package.json +0 -192
- package/.cursor/mcp.json +0 -7
- package/.github/workflows/ci.yml +0 -35
- package/.mcp.json +0 -7
- package/.openclaw/workspace-state.json +0 -4
- package/.pnpmrc.json +0 -1
- package/.wave-launch.sh +0 -7
- package/.workspace-marker +0 -1
- package/AGENTS.md +0 -78
- package/CHANGELOG.md +0 -177
- package/DESIGN.md +0 -929
- package/HEARTBEAT.md +0 -7
- package/IDENTITY.md +0 -23
- package/SOUL.md +0 -36
- package/TOOLS.md +0 -40
- package/USER.md +0 -17
- package/docs/README.md +0 -107
- package/docs/agents/wave-cont-eval-role.md +0 -36
- package/docs/agents/wave-cont-qa-role.md +0 -52
- package/docs/agents/wave-deploy-verifier-role.md +0 -34
- package/docs/agents/wave-design-role.md +0 -47
- package/docs/agents/wave-documentation-role.md +0 -34
- package/docs/agents/wave-infra-role.md +0 -34
- package/docs/agents/wave-integration-role.md +0 -37
- package/docs/agents/wave-launcher-role.md +0 -41
- package/docs/agents/wave-orchestrator-role.md +0 -52
- package/docs/agents/wave-planner-role.md +0 -39
- package/docs/agents/wave-security-role.md +0 -40
- package/docs/architecture/docx/README.md +0 -10
- package/docs/architecture/future/README.md +0 -8
- package/docs/architecture/ooxml-upgrade-analysis.md +0 -134
- package/docs/architecture/platform/shared-openxml-editor-platform.md +0 -153
- package/docs/architecture/xlsx/canonical-workbook-model-and-commands.md +0 -187
- package/docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md +0 -150
- package/docs/comment-redline-overview.md +0 -350
- package/docs/concepts/context7-vs-skills.md +0 -118
- package/docs/concepts/operating-modes.md +0 -91
- package/docs/concepts/runtime-agnostic-orchestration.md +0 -111
- package/docs/concepts/what-is-a-wave.md +0 -217
- package/docs/context7/bundles.json +0 -222
- package/docs/context7/planner-agent/README.md +0 -28
- package/docs/context7/planner-agent/manifest.json +0 -83
- package/docs/context7/planner-agent/papers/cooperbench-why-coding-agents-cannot-be-your-teammates-yet.md +0 -3283
- package/docs/context7/planner-agent/papers/dova-deliberation-first-multi-agent-orchestration-for-autonomous-research-automation.md +0 -1699
- package/docs/context7/planner-agent/papers/dpbench-large-language-models-struggle-with-simultaneous-coordination.md +0 -2251
- package/docs/context7/planner-agent/papers/incremental-planning-to-control-a-blackboard-based-problem-solver.md +0 -1729
- package/docs/context7/planner-agent/papers/silo-bench-a-scalable-environment-for-evaluating-distributed-coordination-in-multi-agent-llm-systems.md +0 -3747
- package/docs/context7/planner-agent/papers/todoevolve-learning-to-architect-agent-planning-systems.md +0 -1675
- package/docs/context7/planner-agent/papers/verified-multi-agent-orchestration-a-plan-execute-verify-replan-framework-for-complex-query-resolution.md +0 -1173
- package/docs/context7/planner-agent/papers/why-do-multi-agent-llm-systems-fail.md +0 -5211
- package/docs/context7/planner-agent/topics/planning-and-orchestration.md +0 -24
- package/docs/evals/arm-templates/README.md +0 -13
- package/docs/evals/arm-templates/full-wave.json +0 -15
- package/docs/evals/arm-templates/single-agent.json +0 -15
- package/docs/evals/benchmark-catalog.json +0 -670
- package/docs/evals/cases/README.md +0 -47
- package/docs/evals/cases/wave-blackboard-inbox-targeting.json +0 -73
- package/docs/evals/cases/wave-contradiction-conflict.json +0 -104
- package/docs/evals/cases/wave-expert-routing-preservation.json +0 -69
- package/docs/evals/cases/wave-hidden-profile-private-evidence.json +0 -81
- package/docs/evals/cases/wave-premature-closure-guard.json +0 -71
- package/docs/evals/cases/wave-silo-cross-agent-state.json +0 -77
- package/docs/evals/cases/wave-simultaneous-lockstep.json +0 -92
- package/docs/evals/external-benchmarks.json +0 -85
- package/docs/evals/external-command-config.sample.json +0 -9
- package/docs/evals/external-command-config.swe-bench-pro.json +0 -8
- package/docs/evals/pilots/README.md +0 -47
- package/docs/evals/pilots/swe-bench-pro-public-full-wave-review-10.json +0 -64
- package/docs/evals/pilots/swe-bench-pro-public-pilot.json +0 -111
- package/docs/evals/wave-benchmark-program.md +0 -302
- package/docs/guides/planner.md +0 -220
- package/docs/guides/recommendations-0.8.9.md +0 -133
- package/docs/guides/signal-wrappers.md +0 -165
- package/docs/guides/terminal-surfaces.md +0 -96
- 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 +0 -498
- package/docs/plans/component-cutover-matrix.json +0 -1072
- package/docs/plans/component-cutover-matrix.md +0 -307
- package/docs/plans/context7-wave-orchestrator.md +0 -155
- package/docs/plans/current-state.md +0 -198
- package/docs/plans/docx/README.md +0 -9
- package/docs/plans/examples/wave-benchmark-improvement.md +0 -108
- package/docs/plans/examples/wave-example-live-proof.md +0 -435
- package/docs/plans/master-plan.md +0 -224
- package/docs/plans/migration.md +0 -538
- package/docs/plans/operations/README.md +0 -7
- package/docs/plans/operations/wave-10-word-certification.md +0 -87
- package/docs/plans/operations/wave-8-railway-staging.md +0 -153
- package/docs/plans/operations/wave-9-manual-certification.md +0 -73
- package/docs/plans/platform/README.md +0 -9
- package/docs/plans/reference/legal-checklist-coverage.md +0 -258
- package/docs/plans/wave-orchestrator.md +0 -423
- package/docs/plans/waves/README.md +0 -75
- package/docs/plans/waves/completed/wave-0.md +0 -195
- package/docs/plans/waves/completed/wave-1.md +0 -379
- package/docs/plans/waves/completed/wave-10.md +0 -670
- package/docs/plans/waves/completed/wave-11.md +0 -335
- package/docs/plans/waves/completed/wave-12.md +0 -417
- package/docs/plans/waves/completed/wave-13.md +0 -316
- package/docs/plans/waves/completed/wave-14.md +0 -319
- package/docs/plans/waves/completed/wave-15.md +0 -321
- package/docs/plans/waves/completed/wave-16.md +0 -316
- package/docs/plans/waves/completed/wave-17.md +0 -331
- package/docs/plans/waves/completed/wave-18.md +0 -328
- package/docs/plans/waves/completed/wave-2.md +0 -438
- package/docs/plans/waves/completed/wave-3.md +0 -435
- package/docs/plans/waves/completed/wave-4.md +0 -430
- package/docs/plans/waves/completed/wave-5.md +0 -430
- package/docs/plans/waves/completed/wave-6.md +0 -430
- package/docs/plans/waves/completed/wave-7.md +0 -526
- package/docs/plans/waves/completed/wave-8.md +0 -596
- package/docs/plans/waves/completed/wave-9.md +0 -552
- package/docs/plans/waves/deferred/README.md +0 -14
- package/docs/plans/waves/deferred/encrypted-intake-contracts.md +0 -282
- package/docs/plans/waves/deferred/legal-feedback-wave-expansion.md +0 -308
- package/docs/plans/waves/deferred/wave-encrypted-intake.md +0 -451
- package/docs/plans/waves/design/README.md +0 -5
- package/docs/plans/waves/design/wave-1-a1.md +0 -309
- package/docs/plans/waves/reviews/README.md +0 -5
- package/docs/plans/waves/reviews/wave-0-cont-qa.md +0 -151
- package/docs/plans/waves/reviews/wave-1-cont-qa.md +0 -46
- package/docs/plans/waves/reviews/wave-10-accessibility-and-design.md +0 -51
- package/docs/plans/waves/reviews/wave-10-cont-qa.md +0 -24
- package/docs/plans/waves/reviews/wave-10-dashboard-proof.md +0 -46
- package/docs/plans/waves/reviews/wave-10-performance-signoff.md +0 -55
- package/docs/plans/waves/reviews/wave-10-regression-proof.md +0 -23
- package/docs/plans/waves/reviews/wave-10-release-audit.md +0 -31
- package/docs/plans/waves/reviews/wave-10-service-proof.md +0 -83
- package/docs/plans/waves/reviews/wave-10-word-certification.md +0 -31
- package/docs/plans/waves/reviews/wave-18-ai-contract-closure.md +0 -277
- package/docs/plans/waves/reviews/wave-18-cont-qa.md +0 -255
- package/docs/plans/waves/reviews/wave-18-parity-proof.md +0 -271
- package/docs/plans/waves/reviews/wave-19-cont-qa.md +0 -59
- package/docs/plans/waves/reviews/wave-2-cont-qa.md +0 -72
- package/docs/plans/waves/reviews/wave-20-cont-qa.md +0 -60
- package/docs/plans/waves/reviews/wave-25-cont-qa.md +0 -48
- package/docs/plans/waves/reviews/wave-28-cont-qa.md +0 -46
- package/docs/plans/waves/reviews/wave-29-cont-qa.md +0 -53
- package/docs/plans/waves/reviews/wave-3-cont-qa.md +0 -53
- package/docs/plans/waves/reviews/wave-3-core-proof.md +0 -77
- package/docs/plans/waves/reviews/wave-3-validator-proof.md +0 -73
- package/docs/plans/waves/reviews/wave-32-cont-qa.md +0 -43
- package/docs/plans/waves/reviews/wave-33-cont-qa.md +0 -526
- package/docs/plans/waves/reviews/wave-34-cont-qa.md +0 -100
- package/docs/plans/waves/reviews/wave-35-cont-qa.md +0 -145
- package/docs/plans/waves/reviews/wave-4-cont-qa.md +0 -47
- package/docs/plans/waves/reviews/wave-4-structure-proof.md +0 -69
- package/docs/plans/waves/reviews/wave-5-comment-proof.md +0 -158
- package/docs/plans/waves/reviews/wave-5-cont-qa.md +0 -68
- package/docs/plans/waves/reviews/wave-6-cont-qa.md +0 -416
- package/docs/plans/waves/reviews/wave-6-redline-proof.md +0 -130
- package/docs/plans/waves/reviews/wave-7-cont-qa.md +0 -82
- package/docs/plans/waves/reviews/wave-7-ooxml-compliance.md +0 -85
- package/docs/plans/waves/reviews/wave-7-preservation-proof.md +0 -119
- package/docs/plans/waves/reviews/wave-7-trust-ux.md +0 -87
- package/docs/plans/waves/reviews/wave-8-accessibility-and-design.md +0 -128
- package/docs/plans/waves/reviews/wave-8-cont-qa.md +0 -92
- package/docs/plans/waves/reviews/wave-8-live-proof.md +0 -140
- package/docs/plans/waves/reviews/wave-8-security.md +0 -47
- package/docs/plans/waves/reviews/wave-9-editor-embedding.md +0 -39
- package/docs/plans/waves/reviews/wave-9-fixture-runner.md +0 -56
- package/docs/plans/waves/reviews/wave-9-live-proof.md +0 -105
- package/docs/plans/waves/reviews/wave-9-usability-and-performance.md +0 -152
- package/docs/plans/waves/specs/README.md +0 -5
- package/docs/plans/waves/specs/wave-1-component-boundaries.md +0 -322
- package/docs/plans/waves/specs/wave-1-ooxml-contracts.md +0 -323
- package/docs/plans/waves/specs/wave-1-review-and-ui-contracts.md +0 -339
- package/docs/plans/waves/specs/wave-1-runtime-contracts.md +0 -509
- package/docs/plans/waves/wave-19.md +0 -341
- package/docs/plans/waves/wave-20.md +0 -308
- package/docs/plans/waves/wave-21.md +0 -289
- package/docs/plans/waves/wave-22.md +0 -221
- package/docs/plans/waves/wave-23.md +0 -295
- package/docs/plans/waves/wave-24.md +0 -286
- package/docs/plans/waves/wave-25.md +0 -313
- package/docs/plans/waves/wave-26.md +0 -300
- package/docs/plans/waves/wave-27.md +0 -299
- package/docs/plans/waves/wave-28.md +0 -368
- package/docs/plans/waves/wave-29.md +0 -303
- package/docs/plans/waves/wave-30.md +0 -307
- package/docs/plans/waves/wave-31.md +0 -231
- package/docs/plans/waves/wave-32.md +0 -152
- package/docs/plans/waves/wave-33.md +0 -147
- package/docs/plans/waves/wave-34.md +0 -148
- package/docs/plans/waves/wave-35.md +0 -141
- package/docs/plans/waves/wave-36.md +0 -146
- package/docs/plans/xlsx/README.md +0 -14
- package/docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md +0 -126
- package/docs/reference/cli-reference.md +0 -600
- package/docs/reference/coordination-and-closure.md +0 -487
- package/docs/reference/deep-research-report (15).md +0 -25
- package/docs/reference/docx/README.md +0 -10
- package/docs/reference/legal-checklist.md +0 -445
- package/docs/reference/live-proof-waves.md +0 -199
- package/docs/reference/ooxml-compliance.md +0 -129
- package/docs/reference/ooxml-feature-parity-matrix.md +0 -172
- package/docs/reference/platform/shared-ooxml-platform-guidance.md +0 -77
- package/docs/reference/prototype-agent-prompt-legal-fidelity.md +0 -155
- package/docs/reference/public-api.md +0 -456
- package/docs/reference/repository-guidance.md +0 -58
- package/docs/reference/runtime-config/README.md +0 -182
- package/docs/reference/runtime-config/claude.md +0 -110
- package/docs/reference/runtime-config/codex.md +0 -82
- package/docs/reference/runtime-config/opencode.md +0 -93
- package/docs/reference/sample-waves.md +0 -105
- package/docs/reference/skills.md +0 -237
- package/docs/reference/templates/AGENTS.md +0 -78
- package/docs/reference/templates/HEARTBEAT.md +0 -7
- package/docs/reference/templates/IDENTITY.md +0 -23
- package/docs/reference/templates/SOUL.md +0 -36
- package/docs/reference/templates/TOOLS.md +0 -40
- package/docs/reference/templates/USER.md +0 -17
- package/docs/reference/wave-control.md +0 -184
- package/docs/reference/wave-planning-lessons.md +0 -167
- package/docs/reference/word-review-editor-frontend-architecture.md +0 -479
- package/docs/reference/word-review-editor-ux-guide.md +0 -253
- package/docs/reference/xlsx/xlsx-ooxml-compliance.md +0 -137
- package/docs/research/agent-context-sources.md +0 -178
- package/docs/research/coordination-failure-review.md +0 -290
- package/docs/research/docx-react-component/Canonical Document Schema Specification for a React-based Word-compatible Editor.md +0 -2317
- package/docs/research/docx-react-component/Feature Compatibility Matrix for a React Word Compatible Legal Editor v1.md +0 -219
- package/docs/research/docx-react-component/React Component Architecture and Front-End Structure Specification for a Word-Compatible Legal Review Editor.md +0 -1112
- package/docs/research/docx-react-component/document_compatibility_and_testing_spec.md +0 -751
- package/docs/research/xlsx/raw/README.md +0 -13
- package/docs/roadmap.md +0 -174
- package/docs/superpowers/plans/2026-03-28-harness-control-bar.md +0 -677
- package/docs/superpowers/specs/2026-03-28-harness-control-bar-design.md +0 -274
- package/docs/xlsx-react/README.md +0 -38
- package/docs/xlsx-react/agent-llm-interaction-layer-docx-xlsx.md +0 -621
- package/docs/xlsx-react/canonical-workbook-model-and-commands.md +0 -948
- package/docs/xlsx-react/shared-openxml-editor-platform-docx-xlsx.md +0 -228
- package/docs/xlsx-react/spreadsheet-editor-component-architecture.md +0 -809
- package/docs/xlsx-react/spreadsheet-editor-frontend-architecture.md +0 -537
- package/docs/xlsx-react/spreadsheet-editor-ux-guide.md +0 -520
- package/docs/xlsx-react/xlsx-editor-research-pack.md +0 -871
- package/docs/xlsx-react/xlsx-fixture-corpus-and-certification-plan.md +0 -436
- package/docs/xlsx-react/xlsx-ooxml-compliance.md +0 -320
- package/examples/README.md +0 -16
- package/memory/MEMORY.md +0 -24
- package/pnpm-workspace.yaml +0 -4
- package/scripts/check-no-authored-js.sh +0 -13
- package/scripts/context7-api-check.sh +0 -65
- package/scripts/context7-export-env.sh +0 -42
- package/scripts/run-context7-mcp.sh +0 -8
- package/scripts/run-workspace-tests.sh +0 -15
- package/scripts/start-wave-10-local.sh +0 -189
- package/scripts/wave-agent-attach.sh +0 -47
- package/scripts/wave-auto-answer.sh +0 -118
- package/scripts/wave-dashboard-attach.sh +0 -13
- package/scripts/wave-launch.sh +0 -273
- package/scripts/wave-overnight-supervisor.sh +0 -145
- package/scripts/wave-status.sh +0 -379
- package/scripts/wave-watch.sh +0 -231
- package/services/README.md +0 -17
- package/services/openxml-validator/Dockerfile +0 -29
- package/services/openxml-validator/OpenXmlValidator.Api.csproj +0 -12
- package/services/openxml-validator/Program.cs +0 -436
- package/services/openxml-validator/README.md +0 -152
- package/services/openxml-validator/railway.json +0 -16
- package/services/react-word-editor/.tmp-a4/src/api/public-types.ts +0 -318
- package/services/react-word-editor/.tmp-a4/src/ui/WordReviewEditor.tsx +0 -1302
- package/services/react-word-editor/.tmp-a4/src/ui/editor-surface/editor-surface.tsx +0 -546
- package/services/react-word-editor/.tmp-a4/test/ui/word-review-editor.test.tsx +0 -146
- package/services/react-word-editor/.tmp-a4-build/src/api/public-types.js +0 -2
- package/services/react-word-editor/.tmp-a4-build/src/ui/WordReviewEditor.js +0 -818
- package/services/react-word-editor/.tmp-a4-build/src/ui/editor-surface/editor-surface.js +0 -229
- package/services/react-word-editor/.tmp-a4-build/test/ui/word-review-editor.test.js +0 -121
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.json +0 -21
- package/services/react-word-editor/.tmp-wave-4-a3-tsconfig.tsbuildinfo +0 -1
- package/services/react-word-editor/Dockerfile +0 -26
- package/services/react-word-editor/README.md +0 -254
- package/services/react-word-editor/app/api/certification/route.ts +0 -79
- package/services/react-word-editor/app/api/demo-sessions/route.ts +0 -109
- package/services/react-word-editor/app/api/deploy-health/route.ts +0 -23
- package/services/react-word-editor/app/api/exports/[exportId]/route.ts +0 -34
- package/services/react-word-editor/app/api/exports/route.ts +0 -81
- package/services/react-word-editor/app/api/fixtures/[fixtureId]/run/route.ts +0 -100
- package/services/react-word-editor/app/api/health/route.ts +0 -70
- package/services/react-word-editor/app/api/runs/[runId]/route.ts +0 -36
- package/services/react-word-editor/app/api/scenarios/[scenarioId]/run/route.ts +0 -85
- package/services/react-word-editor/app/api/sessions/[sessionId]/route.ts +0 -199
- package/services/react-word-editor/app/api/sessions/[sessionId]/source/route.ts +0 -45
- package/services/react-word-editor/app/api/uploads/route.ts +0 -70
- package/services/react-word-editor/app/api/validate/route.ts +0 -310
- package/services/react-word-editor/app/certification/[runId]/page.tsx +0 -14
- package/services/react-word-editor/app/certification/page.tsx +0 -32
- package/services/react-word-editor/app/dashboard/page.tsx +0 -7
- package/services/react-word-editor/app/demo/page.tsx +0 -30
- package/services/react-word-editor/app/demo/prototype-client.tsx +0 -1080
- package/services/react-word-editor/app/editor/[sessionId]/page.tsx +0 -33
- package/services/react-word-editor/app/fixtures/page.tsx +0 -7
- package/services/react-word-editor/app/globals.css +0 -121
- package/services/react-word-editor/app/layout.tsx +0 -32
- package/services/react-word-editor/app/page.tsx +0 -30
- package/services/react-word-editor/app/runs/[runId]/page.tsx +0 -34
- package/services/react-word-editor/app/wave-10-word-review/page.tsx +0 -7
- package/services/react-word-editor/components/harness-control-bar.tsx +0 -289
- package/services/react-word-editor/components/harness-editor-session-client.tsx +0 -1214
- package/services/react-word-editor/components/harness-workspace-page.tsx +0 -715
- package/services/react-word-editor/components/reduced-motion-toggle.tsx +0 -79
- package/services/react-word-editor/components/workspace-certification-panel.tsx +0 -307
- package/services/react-word-editor/lib/certification-bundle.ts +0 -796
- package/services/react-word-editor/lib/certification-store.ts +0 -661
- package/services/react-word-editor/lib/demo-fixtures.test.mjs +0 -195
- package/services/react-word-editor/lib/demo-fixtures.ts +0 -1519
- package/services/react-word-editor/lib/editor-session-summary.test.mjs +0 -68
- package/services/react-word-editor/lib/editor-session-summary.ts +0 -14
- package/services/react-word-editor/lib/editor-session.ts +0 -228
- package/services/react-word-editor/lib/exports-route.test.mjs +0 -32
- package/services/react-word-editor/lib/harness-client.ts +0 -347
- package/services/react-word-editor/lib/harness-config.json +0 -30
- package/services/react-word-editor/lib/harness-config.test.mjs +0 -31
- package/services/react-word-editor/lib/harness-config.ts +0 -21
- package/services/react-word-editor/lib/harness-editor-datastore.test.mjs +0 -220
- package/services/react-word-editor/lib/harness-editor-datastore.ts +0 -161
- package/services/react-word-editor/lib/private-mode.test.mjs +0 -42
- package/services/react-word-editor/lib/private-mode.ts +0 -61
- package/services/react-word-editor/lib/regression-report.test.mjs +0 -352
- package/services/react-word-editor/lib/regression-report.ts +0 -896
- package/services/react-word-editor/lib/run-artifacts.ts +0 -934
- package/services/react-word-editor/lib/run-history.ts +0 -755
- package/services/react-word-editor/lib/scenario-artifacts.test.mjs +0 -41
- package/services/react-word-editor/lib/scenario-artifacts.ts +0 -44
- package/services/react-word-editor/lib/storage.ts +0 -953
- package/services/react-word-editor/lib/validator-client.test.mjs +0 -54
- package/services/react-word-editor/lib/validator-client.ts +0 -95
- package/services/react-word-editor/lib/workspace-navigation.ts +0 -79
- package/services/react-word-editor/middleware.ts +0 -35
- package/services/react-word-editor/next-env.d.ts +0 -6
- package/services/react-word-editor/next.config.mjs +0 -15
- package/services/react-word-editor/package.json +0 -38
- package/services/react-word-editor/postcss.config.mjs +0 -8
- package/services/react-word-editor/railway.json +0 -21
- package/services/react-word-editor/scripts/wave-10-certification.mjs +0 -101
- package/services/react-word-editor/scripts/wave-9-live-usability-pilot.mjs +0 -911
- package/services/react-word-editor/tsconfig.json +0 -39
- package/services/react-word-editor/tsconfig.tsbuildinfo +0 -1
- package/skills/README.md +0 -48
- package/skills/domain-docx-compatibility/SKILL.md +0 -44
- package/skills/domain-docx-compatibility/skill.json +0 -19
- package/skills/domain-editor-architecture/SKILL.md +0 -49
- package/skills/domain-editor-architecture/skill.json +0 -19
- package/skills/domain-legal-review/SKILL.md +0 -39
- package/skills/domain-legal-review/skill.json +0 -19
- package/skills/provider-aws/SKILL.md +0 -117
- package/skills/provider-aws/adapters/claude.md +0 -1
- package/skills/provider-aws/adapters/codex.md +0 -1
- package/skills/provider-aws/references/service-verification.md +0 -39
- package/skills/provider-aws/skill.json +0 -54
- package/skills/provider-custom-deploy/SKILL.md +0 -64
- package/skills/provider-custom-deploy/skill.json +0 -50
- package/skills/provider-docker-compose/SKILL.md +0 -96
- package/skills/provider-docker-compose/adapters/local.md +0 -1
- package/skills/provider-docker-compose/skill.json +0 -53
- package/skills/provider-github-release/SKILL.md +0 -121
- package/skills/provider-github-release/adapters/claude.md +0 -1
- package/skills/provider-github-release/adapters/codex.md +0 -1
- package/skills/provider-github-release/skill.json +0 -55
- package/skills/provider-kubernetes/SKILL.md +0 -143
- package/skills/provider-kubernetes/adapters/claude.md +0 -1
- package/skills/provider-kubernetes/adapters/codex.md +0 -1
- package/skills/provider-kubernetes/references/kubectl-patterns.md +0 -58
- package/skills/provider-kubernetes/skill.json +0 -52
- package/skills/provider-railway/SKILL.md +0 -123
- package/skills/provider-railway/adapters/claude.md +0 -1
- package/skills/provider-railway/adapters/codex.md +0 -1
- package/skills/provider-railway/adapters/local.md +0 -1
- package/skills/provider-railway/adapters/opencode.md +0 -1
- package/skills/provider-railway/references/verification-commands.md +0 -39
- package/skills/provider-railway/skill.json +0 -71
- package/skills/provider-ssh-manual/SKILL.md +0 -97
- package/skills/provider-ssh-manual/skill.json +0 -54
- package/skills/repo-coding-rules/SKILL.md +0 -55
- package/skills/repo-coding-rules/skill.json +0 -34
- package/skills/role-cont-eval/SKILL.md +0 -91
- package/skills/role-cont-eval/adapters/codex.md +0 -1
- package/skills/role-cont-eval/skill.json +0 -36
- package/skills/role-cont-qa/SKILL.md +0 -100
- package/skills/role-cont-qa/adapters/claude.md +0 -1
- package/skills/role-cont-qa/skill.json +0 -36
- package/skills/role-deploy/SKILL.md +0 -97
- package/skills/role-deploy/skill.json +0 -36
- package/skills/role-design/SKILL.md +0 -50
- package/skills/role-design/skill.json +0 -36
- package/skills/role-documentation/SKILL.md +0 -76
- package/skills/role-documentation/skill.json +0 -36
- package/skills/role-implementation/SKILL.md +0 -45
- package/skills/role-implementation/skill.json +0 -36
- package/skills/role-infra/SKILL.md +0 -81
- package/skills/role-infra/skill.json +0 -36
- package/skills/role-integration/SKILL.md +0 -91
- package/skills/role-integration/skill.json +0 -36
- package/skills/role-planner/SKILL.md +0 -39
- package/skills/role-planner/skill.json +0 -21
- package/skills/role-research/SKILL.md +0 -65
- package/skills/role-research/skill.json +0 -36
- package/skills/role-security/SKILL.md +0 -60
- package/skills/role-security/skill.json +0 -36
- package/skills/runtime-claude/SKILL.md +0 -66
- package/skills/runtime-claude/skill.json +0 -36
- package/skills/runtime-codex/SKILL.md +0 -58
- package/skills/runtime-codex/skill.json +0 -36
- package/skills/runtime-local/SKILL.md +0 -46
- package/skills/runtime-local/skill.json +0 -36
- package/skills/runtime-opencode/SKILL.md +0 -58
- package/skills/runtime-opencode/skill.json +0 -36
- package/skills/signal-hygiene/SKILL.md +0 -51
- package/skills/signal-hygiene/skill.json +0 -20
- package/skills/tui-design/SKILL.md +0 -77
- package/skills/tui-design/references/tui-design.md +0 -259
- package/skills/tui-design/skill.json +0 -36
- package/skills/wave-core/SKILL.md +0 -141
- package/skills/wave-core/references/marker-syntax.md +0 -70
- package/skills/wave-core/skill.json +0 -35
- package/test/README.md +0 -16
- package/test/core/formatting-commands.test.ts +0 -285
- package/test/core/image-commands.test.ts +0 -298
- package/test/core/mapping.test.ts +0 -186
- package/test/core/text-commands.test.ts +0 -176
- package/test/fixtures/docx/F01-basic-contract.docx +0 -0
- package/test/fixtures/docx/F01-basic-contract.md +0 -33
- package/test/fixtures/docx/F02-headings-styles.docx +0 -0
- package/test/fixtures/docx/F02-headings-styles.md +0 -33
- package/test/fixtures/docx/F03-legal-outline-numbering.docx +0 -0
- package/test/fixtures/docx/F03-legal-outline-numbering.md +0 -34
- package/test/fixtures/docx/F04-restart-numbering-schedules.docx +0 -0
- package/test/fixtures/docx/F04-restart-numbering-schedules.md +0 -33
- package/test/fixtures/docx/F05-table-heavy-agreement.docx +0 -0
- package/test/fixtures/docx/F05-table-heavy-agreement.md +0 -34
- package/test/fixtures/docx/F06-merged-cells-signature-table.docx +0 -0
- package/test/fixtures/docx/F06-merged-cells-signature-table.md +0 -34
- package/test/fixtures/docx/F07-inline-images-exhibit.docx +0 -0
- package/test/fixtures/docx/F07-inline-images-exhibit.md +0 -34
- package/test/fixtures/docx/F08-hyperlinks.docx +0 -0
- package/test/fixtures/docx/F08-hyperlinks.md +0 -33
- package/test/fixtures/docx/F09-comments-single-paragraph.docx +0 -0
- package/test/fixtures/docx/F09-comments-single-paragraph.md +0 -33
- package/test/fixtures/docx/F10-threaded-comments-resolve.docx +0 -0
- package/test/fixtures/docx/F10-threaded-comments-resolve.md +0 -33
- package/test/fixtures/docx/F11-redlines-basic.docx +0 -0
- package/test/fixtures/docx/F11-redlines-basic.md +0 -33
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.docx +0 -0
- package/test/fixtures/docx/F12-redlines-paragraph-joins-splits.md +0 -33
- package/test/fixtures/docx/F13-comments-on-deleted-text.docx +0 -0
- package/test/fixtures/docx/F13-comments-on-deleted-text.md +0 -33
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.docx +0 -0
- package/test/fixtures/docx/F14-revisions-in-tables-and-lists.md +0 -33
- package/test/fixtures/docx/F15-sections-headers-footers.docx +0 -0
- package/test/fixtures/docx/F15-sections-headers-footers.md +0 -33
- package/test/fixtures/docx/F16-footnotes-endnotes.docx +0 -0
- package/test/fixtures/docx/F16-footnotes-endnotes.md +0 -33
- package/test/fixtures/docx/F17-fields-and-toc.docx +0 -0
- package/test/fixtures/docx/F17-fields-and-toc.md +0 -33
- package/test/fixtures/docx/F18-content-controls-template.docx +0 -0
- package/test/fixtures/docx/F18-content-controls-template.md +0 -33
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.docx +0 -0
- package/test/fixtures/docx/F19-custom-xml-doc-assembly.md +0 -35
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.docx +0 -0
- package/test/fixtures/docx/F20-unknown-ooxml-and-alternatecontent.md +0 -33
- package/test/fixtures/docx/F21-malformed-broken-docx.docx +0 -0
- package/test/fixtures/docx/F21-malformed-broken-docx.md +0 -33
- package/test/fixtures/docx/README.md +0 -74
- package/test/fixtures/docx/certification-manifest.json +0 -104
- package/test/fixtures/docx/fixtures.manifest.json +0 -196
- package/test/fixtures/encrypted-docx/README.md +0 -27
- package/test/fixtures/encrypted-docx/certification-manifest.json +0 -9
- package/test/fixtures/encrypted-docx/fixtures.manifest.json +0 -47
- package/test/fixtures/scenarios/docx/README.md +0 -25
- package/test/fixtures/scenarios/docx/S01-sow-template.docx +0 -0
- package/test/fixtures/scenarios/docx/S01-sow-template.md +0 -30
- 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 +0 -32
- package/test/fixtures/scenarios/docx/scenario-manifest.json +0 -53
- package/test/formats/xlsx/io/xlsx-import.test.ts +0 -766
- package/test/formats/xlsx/model/workbook.test.ts +0 -669
- package/test/helpers/dom-setup.ts +0 -124
- package/test/io/comment-roundtrip.test.ts +0 -272
- package/test/io/complex-content-roundtrip.test.ts +0 -632
- package/test/io/docx-compatibility-regression.test.ts +0 -199
- package/test/io/docx-session.test.ts +0 -1495
- package/test/io/footnotes-roundtrip.test.ts +0 -318
- package/test/io/headers-footers-roundtrip.test.ts +0 -547
- package/test/io/numbering-roundtrip.test.ts +0 -234
- package/test/io/package-reader.test.ts +0 -199
- package/test/io/paragraph-properties-roundtrip.test.ts +0 -129
- package/test/io/preserved-package-roundtrip.test.ts +0 -365
- package/test/io/property-completeness.test.ts +0 -292
- package/test/io/revision-roundtrip.test.ts +0 -347
- package/test/io/structural-blocks.test.ts +0 -202
- package/test/io/table-media-roundtrip.test.ts +0 -448
- package/test/io/table-properties-roundtrip.test.ts +0 -569
- package/test/io/table-roundtrip.test.ts +0 -302
- package/test/io/text-roundtrip.test.ts +0 -344
- package/test/model/canonical-document.test.ts +0 -285
- package/test/preservation/opaque-fragment-store.test.ts +0 -121
- package/test/preservation/package-preservation.test.ts +0 -395
- package/test/preservation/store.test.ts +0 -84
- package/test/review/comment-remapping.test.ts +0 -220
- package/test/review/comment-store.test.ts +0 -180
- package/test/review/move-revisions.test.ts +0 -143
- package/test/review/property-change-revisions.test.ts +0 -225
- package/test/review/revision-actions.test.ts +0 -330
- package/test/review/revision-store.test.ts +0 -193
- package/test/runtime/session-capabilities.test.ts +0 -260
- package/test/runtime/table-commands.test.ts +0 -356
- package/test/runtime/table-schema.test.ts +0 -221
- package/test/runtime/tracked-changes-toggle.test.ts +0 -107
- package/test/ui/comment-review-surface.test.tsx +0 -114
- package/test/ui/reduced-motion-toggle.test.tsx +0 -137
- package/test/ui/word-review-editor.imported-scenarios.test.tsx +0 -169
- package/test/ui/word-review-editor.interaction.test.tsx +0 -1198
- package/test/ui/word-review-editor.test.js +0 -188
- package/test/ui/word-review-editor.test.tsx +0 -280
- package/test/ui-tailwind/search-plugin.test.ts +0 -286
- package/test/validation/compatibility-engine.test.ts +0 -336
- package/test/validation/compatibility-report.test.ts +0 -189
- package/test/validation/low-priority-word-surfaces.test.ts +0 -282
- package/test/validation/malformed-doc.test.ts +0 -113
- package/test-results/.last-run.json +0 -4
- package/wave.config.json +0 -406
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
# Harness Control Bar + Live Runtime Editor
|
|
2
|
-
|
|
3
|
-
## Problem
|
|
4
|
-
|
|
5
|
-
The `/demo` route renders a mock prototype with fixture data — no real editing, no real DOCX loading. The real runtime editor lives at `/editor/[sessionId]` behind a complex workspace wrapper. Users must navigate between disconnected routes to access harness features (upload, validation, certification) and the actual editor.
|
|
6
|
-
|
|
7
|
-
## Solution
|
|
8
|
-
|
|
9
|
-
Replace the root route (`/`) with a single page that renders:
|
|
10
|
-
1. A **harness control bar** at the top — source picker, upload, validation, certification, session controls
|
|
11
|
-
2. The **real `WordReviewEditor`** below — actual DOCX loading, editing, comments, revisions, export
|
|
12
|
-
|
|
13
|
-
The prototype demo client (`prototype-client.tsx`) is retired. The mock fixture catalog (`demo-fixtures.ts`) remains available for unit tests but is no longer rendered.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Architecture
|
|
18
|
-
|
|
19
|
-
### Separation of Concerns
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
┌─────────────────────────────────────────────────────┐
|
|
23
|
-
│ HarnessControlBar (harness-owned) │
|
|
24
|
-
│ Source picker, upload, validate, export, cert, │
|
|
25
|
-
│ dark mode, reduced motion, session info │
|
|
26
|
-
├─────────────────────────────────────────────────────┤
|
|
27
|
-
│ WordReviewEditor (runtime-owned) │
|
|
28
|
-
│ Toolbar, document surface, review rail, status bar │
|
|
29
|
-
│ No harness awareness — receives data via props │
|
|
30
|
-
└─────────────────────────────────────────────────────┘
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
The control bar and editor communicate through:
|
|
34
|
-
- **Props down**: `externalDocSource` (DOCX bytes or snapshot), `currentUser`, `documentId`
|
|
35
|
-
- **Ref up**: `WordReviewEditorRef` for imperative actions (exportDocx, getSnapshot)
|
|
36
|
-
- **Events**: `onEvent` callback for dirty/save/export state changes
|
|
37
|
-
|
|
38
|
-
The editor has zero knowledge of the harness. The harness has zero knowledge of document content.
|
|
39
|
-
|
|
40
|
-
### Routes
|
|
41
|
-
|
|
42
|
-
| Route | Behavior |
|
|
43
|
-
|-------|----------|
|
|
44
|
-
| `/` | Harness control bar + live `WordReviewEditor`. Default source: F01. |
|
|
45
|
-
| `/editor/[sessionId]` | Same layout, locked to a specific session ID. |
|
|
46
|
-
| `/demo` | Redirects to `/`. |
|
|
47
|
-
| `/fixtures`, `/dashboard`, `/certification` | Redirect to `/?panel=<name>`. |
|
|
48
|
-
| `/runs/[runId]` | Validation run detail (unchanged). |
|
|
49
|
-
|
|
50
|
-
### Source Resolution
|
|
51
|
-
|
|
52
|
-
On initial load, the page:
|
|
53
|
-
1. Calls `getHarnessDashboardModel()` server-side
|
|
54
|
-
2. Finds the default source (F01 if available, else first available fixture)
|
|
55
|
-
3. Creates a session via `createHarnessSession(sourceId)`
|
|
56
|
-
4. Passes the session's DOCX bytes to `WordReviewEditor` via `externalDocSource`
|
|
57
|
-
|
|
58
|
-
When the user picks a different source from the control bar:
|
|
59
|
-
1. Control bar calls `POST /api/demo-sessions` with `sourceId` or uploaded file
|
|
60
|
-
2. Response includes new session record with source bytes
|
|
61
|
-
3. Control bar updates the `externalDocSource` prop → editor reloads
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Harness Control Bar Component
|
|
66
|
-
|
|
67
|
-
### File
|
|
68
|
-
`services/react-word-editor/components/harness-control-bar.tsx`
|
|
69
|
-
|
|
70
|
-
### Props
|
|
71
|
-
```typescript
|
|
72
|
-
interface HarnessControlBarProps {
|
|
73
|
-
sources: BrowseableSource[];
|
|
74
|
-
currentSession: HarnessSessionRecord;
|
|
75
|
-
currentSource: HarnessSourceRecord;
|
|
76
|
-
editorRef: React.RefObject<WordReviewEditorRef>;
|
|
77
|
-
onSessionChange: (session: HarnessSessionRecord, source: HarnessSourceRecord) => void;
|
|
78
|
-
onDarkModeChange: (dark: boolean) => void;
|
|
79
|
-
onReducedMotionChange: (reduced: boolean) => void;
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Layout
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
87
|
-
│ [📄 F01-basic-contract ▼] [📤 Upload .docx] │ Session: abc-123 │
|
|
88
|
-
│ [✓ Validate] [↓ Export] [📋 Runs ▼] [🏅 Cert ▼] │ ☀/🌙 □ Reduced │
|
|
89
|
-
└──────────────────────────────────────────────────────────────────────────┘
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Left Cluster: Source Selection
|
|
93
|
-
|
|
94
|
-
**Fixture/Scenario/Upload Picker** (Radix Select):
|
|
95
|
-
- Groups: "Fixtures" (F01-F20), "Scenarios" (S01-S02), "Recent Uploads"
|
|
96
|
-
- Each item shows: name, source kind badge, availability status
|
|
97
|
-
- Selecting a source → creates new session → reloads editor
|
|
98
|
-
- Unavailable sources (missing artifact files) shown as disabled
|
|
99
|
-
|
|
100
|
-
**Upload Button**:
|
|
101
|
-
- Hidden file input accepting `.docx`
|
|
102
|
-
- On selection: POST FormData to `/api/demo-sessions`
|
|
103
|
-
- Creates upload source + session in one step
|
|
104
|
-
- Shows upload filename briefly, then switches to new session
|
|
105
|
-
|
|
106
|
-
### Center: Session Info
|
|
107
|
-
|
|
108
|
-
- Current session ID (truncated, monospace)
|
|
109
|
-
- Source label (e.g., "F01-basic-contract.docx")
|
|
110
|
-
- Dirty indicator dot (green=saved, amber=unsaved, red=error)
|
|
111
|
-
|
|
112
|
-
### Right Cluster: Operator Controls
|
|
113
|
-
|
|
114
|
-
**Validate Button**:
|
|
115
|
-
- Calls `editorRef.current.exportDocx()` first to get current bytes
|
|
116
|
-
- POSTs bytes to `/api/validate`
|
|
117
|
-
- Shows inline result: "✓ Valid" or "✗ 3 findings"
|
|
118
|
-
- Links to full validation run detail at `/runs/[runId]`
|
|
119
|
-
|
|
120
|
-
**Export Button**:
|
|
121
|
-
- Calls `editorRef.current.exportDocx()`
|
|
122
|
-
- Triggers browser download of the `.docx` file
|
|
123
|
-
- Shows brief "Exported" confirmation
|
|
124
|
-
|
|
125
|
-
**Runs Dropdown** (Radix Select):
|
|
126
|
-
- Lists recent validation runs for current session
|
|
127
|
-
- Each entry: timestamp, valid/invalid badge, finding count
|
|
128
|
-
- Selecting opens `/runs/[runId]` in new tab
|
|
129
|
-
|
|
130
|
-
**Certification Dropdown** (Radix Select):
|
|
131
|
-
- Options: "Word Desktop", "Word Web"
|
|
132
|
-
- Each shows last certification status
|
|
133
|
-
- Selecting opens inline certification form (pass/issues-found/notes)
|
|
134
|
-
- Submits to `POST /api/certification`
|
|
135
|
-
|
|
136
|
-
**Dark Mode Toggle**: Sun/Moon icon button, scopes `.dark` class to page root
|
|
137
|
-
|
|
138
|
-
**Reduced Motion Toggle**: Checkbox, sets `data-reduced-motion` attribute
|
|
139
|
-
|
|
140
|
-
### Styling
|
|
141
|
-
|
|
142
|
-
Tailwind classes matching the editor theme. The control bar uses:
|
|
143
|
-
- `h-9 bg-surface border-b border-border text-xs` — compact, consistent with editor chrome
|
|
144
|
-
- Same CSS custom properties as the editor theme
|
|
145
|
-
- Focus ring pattern: `focus-visible:ring-2 focus-visible:ring-accent`
|
|
146
|
-
- Dark mode: inherits from the `.dark` class on the page root
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Page Component
|
|
151
|
-
|
|
152
|
-
### File
|
|
153
|
-
`services/react-word-editor/app/page.tsx`
|
|
154
|
-
|
|
155
|
-
### Server Component
|
|
156
|
-
```typescript
|
|
157
|
-
export default async function MainPage({ searchParams }) {
|
|
158
|
-
const model = await getHarnessDashboardModel();
|
|
159
|
-
const defaultSource = findDefaultSource(model.browseableSources);
|
|
160
|
-
const session = await createHarnessSession(defaultSource.sourceId);
|
|
161
|
-
const sourceBytes = await readSourceBytes(defaultSource);
|
|
162
|
-
|
|
163
|
-
return (
|
|
164
|
-
<HarnessEditorPage
|
|
165
|
-
sources={model.browseableSources}
|
|
166
|
-
initialSession={session}
|
|
167
|
-
initialSource={defaultSource}
|
|
168
|
-
initialSourceBytes={sourceBytes}
|
|
169
|
-
/>
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### Client Component (`HarnessEditorPage`)
|
|
175
|
-
```typescript
|
|
176
|
-
function HarnessEditorPage(props) {
|
|
177
|
-
const editorRef = useRef<WordReviewEditorRef>(null);
|
|
178
|
-
const [session, setSession] = useState(props.initialSession);
|
|
179
|
-
const [source, setSource] = useState(props.initialSource);
|
|
180
|
-
const [sourceBytes, setSourceBytes] = useState(props.initialSourceBytes);
|
|
181
|
-
const [darkMode, setDarkMode] = useState(false);
|
|
182
|
-
const [reducedMotion, setReducedMotion] = useState(false);
|
|
183
|
-
|
|
184
|
-
return (
|
|
185
|
-
<div className={darkMode ? "dark" : ""} data-reduced-motion={reducedMotion}>
|
|
186
|
-
<HarnessControlBar
|
|
187
|
-
sources={props.sources}
|
|
188
|
-
currentSession={session}
|
|
189
|
-
currentSource={source}
|
|
190
|
-
editorRef={editorRef}
|
|
191
|
-
onSessionChange={(newSession, newSource) => {
|
|
192
|
-
setSession(newSession);
|
|
193
|
-
setSource(newSource);
|
|
194
|
-
// fetch new source bytes, update sourceBytes state
|
|
195
|
-
}}
|
|
196
|
-
onDarkModeChange={setDarkMode}
|
|
197
|
-
onReducedMotionChange={setReducedMotion}
|
|
198
|
-
/>
|
|
199
|
-
<WordReviewEditor
|
|
200
|
-
ref={editorRef}
|
|
201
|
-
documentId={session.documentId}
|
|
202
|
-
currentUser={{ userId: "operator", displayName: "Operator" }}
|
|
203
|
-
externalDocSource={{ kind: "docx", bytes: sourceBytes, sourceLabel: source.name }}
|
|
204
|
-
reviewMode="review"
|
|
205
|
-
onEvent={handleEditorEvent}
|
|
206
|
-
/>
|
|
207
|
-
</div>
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## Fixture Test Cases
|
|
215
|
-
|
|
216
|
-
All 20+ fixtures from `test/fixtures/docx/` and 2 scenarios from `test/fixtures/scenarios/docx/` are exposed in the source picker dropdown:
|
|
217
|
-
|
|
218
|
-
| ID | Name | Focus |
|
|
219
|
-
|----|------|-------|
|
|
220
|
-
| F01 | Basic Contract | supported-roundtrip baseline |
|
|
221
|
-
| F02 | Headings & Styles | style preservation |
|
|
222
|
-
| F03 | Legal Outline Numbering | numbering restart |
|
|
223
|
-
| F04 | Restart Numbering Schedules | numbering restart edge cases |
|
|
224
|
-
| F05 | Table-Heavy Agreement | preserve-only tables |
|
|
225
|
-
| F06 | Merged Cells Signature Table | preserve-only table edge cases |
|
|
226
|
-
| F07 | Inline Images Exhibit | image relationship handling |
|
|
227
|
-
| F08 | Hyperlinks | hyperlink preservation |
|
|
228
|
-
| F09 | Comments Single Paragraph | basic comment roundtrip |
|
|
229
|
-
| F10 | Threaded Comments | threaded comments with resolution |
|
|
230
|
-
| F11 | Redlines Basic | tracked change roundtrip |
|
|
231
|
-
| F12 | Paragraph Joins/Splits | complex revision boundaries |
|
|
232
|
-
| F13 | Comments on Deleted Text | anchor detachment |
|
|
233
|
-
| F14 | Revisions in Tables/Lists | structural revisions |
|
|
234
|
-
| F15 | Sections/Headers/Footers | preserve-only sections |
|
|
235
|
-
| F16 | Footnotes/Endnotes | preserve-only notes |
|
|
236
|
-
| F17 | Fields and TOC | preserve-only fields |
|
|
237
|
-
| F20 | Unknown OOXML | alternate content preservation |
|
|
238
|
-
| S01 | SOW Template | real-world scenario |
|
|
239
|
-
| S02 | Licence Agreement Redlines | real-world redline scenario |
|
|
240
|
-
|
|
241
|
-
Each fixture shows availability status (artifact exists on disk or not).
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Files Changed
|
|
246
|
-
|
|
247
|
-
| File | Change |
|
|
248
|
-
|------|--------|
|
|
249
|
-
| `app/page.tsx` | Rewrite: server component loading default session + client page |
|
|
250
|
-
| `app/demo/page.tsx` | Redirect to `/` |
|
|
251
|
-
| `components/harness-control-bar.tsx` | New: full operator control bar |
|
|
252
|
-
| `components/harness-editor-page.tsx` | New: client component composing control bar + editor |
|
|
253
|
-
|
|
254
|
-
## Files Unchanged
|
|
255
|
-
|
|
256
|
-
- `WordReviewEditor.tsx` — no changes, receives data via props
|
|
257
|
-
- `src/ui-tailwind/` — no changes, renders from RuntimeRenderSnapshot
|
|
258
|
-
- All API routes — no changes, called by control bar
|
|
259
|
-
- `lib/storage.ts`, `lib/harness-client.ts` — no changes, used by page server component
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
## Verification
|
|
264
|
-
|
|
265
|
-
1. `/` loads with F01 fixture in the real editor
|
|
266
|
-
2. Fixture picker dropdown shows all 20+ fixtures grouped by kind
|
|
267
|
-
3. Selecting a different fixture reloads the editor with new document
|
|
268
|
-
4. Upload button accepts `.docx` and opens it in the editor
|
|
269
|
-
5. Validate button exports and validates, shows inline result
|
|
270
|
-
6. Export button downloads the current document
|
|
271
|
-
7. Dark mode toggle inverts the entire page (control bar + editor)
|
|
272
|
-
8. Reduced motion toggle disables all animations
|
|
273
|
-
9. All existing API routes continue to work
|
|
274
|
-
10. `/editor/[sessionId]` route continues to work independently
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# XLSX Research Intake
|
|
2
|
-
|
|
3
|
-
This directory is the research intake area for the future `xlsx` runtime.
|
|
4
|
-
|
|
5
|
-
It is not the canonical source for shipped repo contracts. The repo now separates xlsx docs into two groups:
|
|
6
|
-
|
|
7
|
-
- canonical planned docs under `docs/architecture/xlsx/`, `docs/reference/xlsx/`, and `docs/plans/xlsx/`
|
|
8
|
-
- retained research papers in this folder when the source material is still useful but not yet the repo's final contract language
|
|
9
|
-
|
|
10
|
-
## Promoted Into Canonical Planned Docs
|
|
11
|
-
|
|
12
|
-
These research papers now have repo-aligned canonical destinations:
|
|
13
|
-
|
|
14
|
-
| Research source | Canonical planned doc |
|
|
15
|
-
| --- | --- |
|
|
16
|
-
| [`shared-openxml-editor-platform-docx-xlsx.md`](./shared-openxml-editor-platform-docx-xlsx.md) | `docs/architecture/platform/shared-openxml-editor-platform.md` |
|
|
17
|
-
| [`spreadsheet-editor-frontend-architecture.md`](./spreadsheet-editor-frontend-architecture.md) | `docs/architecture/xlsx/spreadsheet-editor-frontend-architecture.md` |
|
|
18
|
-
| [`canonical-workbook-model-and-commands.md`](./canonical-workbook-model-and-commands.md) | `docs/architecture/xlsx/canonical-workbook-model-and-commands.md` |
|
|
19
|
-
| [`xlsx-ooxml-compliance.md`](./xlsx-ooxml-compliance.md) | `docs/reference/xlsx/xlsx-ooxml-compliance.md` |
|
|
20
|
-
| [`xlsx-fixture-corpus-and-certification-plan.md`](./xlsx-fixture-corpus-and-certification-plan.md) | `docs/plans/xlsx/xlsx-fixture-corpus-and-certification-plan.md` |
|
|
21
|
-
|
|
22
|
-
## Retained Research Docs
|
|
23
|
-
|
|
24
|
-
These papers remain useful research inputs, but they are not yet the repo's canonical planned contracts:
|
|
25
|
-
|
|
26
|
-
| File | Current role |
|
|
27
|
-
| --- | --- |
|
|
28
|
-
| [`spreadsheet-editor-component-architecture.md`](./spreadsheet-editor-component-architecture.md) | Additional xlsx shell and source-layout exploration that still informs the planned architecture docs |
|
|
29
|
-
| [`spreadsheet-editor-ux-guide.md`](./spreadsheet-editor-ux-guide.md) | Spreadsheet UX research and future product guidance |
|
|
30
|
-
| [`agent-llm-interaction-layer-docx-xlsx.md`](./agent-llm-interaction-layer-docx-xlsx.md) | Future cross-vertical agent layer input; not part of the shipped docx API or first xlsx runtime contract |
|
|
31
|
-
| [`xlsx-editor-research-pack.md`](./xlsx-editor-research-pack.md) | Umbrella source pack and rationale archive |
|
|
32
|
-
|
|
33
|
-
## Cleanup Policy
|
|
34
|
-
|
|
35
|
-
- Keep descriptive kebab-case filenames for retained research docs.
|
|
36
|
-
- Promote only the papers that have been rewritten into repo-aligned canonical docs.
|
|
37
|
-
- If a newly added raw imported report duplicates an already-cleaned paper, keep the cleaned paper and remove the raw duplicate.
|
|
38
|
-
- Treat this folder as research intake, not as the source of shipped or guaranteed runtime behavior.
|