@beyondwork/docx-react-component 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-32W6IVQE.js +7725 -0
- package/dist/chunk-32W6IVQE.js.map +1 -0
- package/dist/index.cjs +23722 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +16011 -0
- package/dist/index.js.map +1 -0
- package/dist/public-types-DqCURAz8.d.cts +1152 -0
- package/dist/public-types-DqCURAz8.d.ts +1152 -0
- package/dist/tailwind.cjs +8295 -0
- package/dist/tailwind.cjs.map +1 -0
- package/dist/tailwind.d.cts +323 -0
- package/dist/tailwind.d.ts +323 -0
- package/dist/tailwind.js +553 -0
- package/dist/tailwind.js.map +1 -0
- package/package.json +52 -31
- 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/src/README.md +0 -85
- package/src/api/README.md +0 -22
- package/src/api/public-types.ts +0 -525
- package/src/component-inventory.md +0 -99
- package/src/core/README.md +0 -10
- package/src/core/commands/README.md +0 -3
- package/src/core/commands/formatting-commands.ts +0 -161
- package/src/core/commands/image-commands.ts +0 -144
- package/src/core/commands/index.ts +0 -1013
- package/src/core/commands/list-commands.ts +0 -370
- package/src/core/commands/review-commands.ts +0 -108
- package/src/core/commands/text-commands.ts +0 -119
- package/src/core/schema/README.md +0 -3
- package/src/core/schema/text-schema.ts +0 -512
- package/src/core/selection/README.md +0 -3
- package/src/core/selection/mapping.ts +0 -238
- package/src/core/selection/review-anchors.ts +0 -94
- package/src/core/state/README.md +0 -3
- package/src/core/state/editor-state.ts +0 -580
- package/src/core/state/text-transaction.ts +0 -276
- package/src/formats/xlsx/io/parse-shared-strings.ts +0 -41
- package/src/formats/xlsx/io/parse-sheet.ts +0 -289
- package/src/formats/xlsx/io/parse-styles.ts +0 -57
- package/src/formats/xlsx/io/parse-workbook.ts +0 -75
- package/src/formats/xlsx/io/xlsx-session.ts +0 -306
- package/src/formats/xlsx/model/cell.ts +0 -189
- package/src/formats/xlsx/model/sheet.ts +0 -244
- package/src/formats/xlsx/model/styles.ts +0 -118
- package/src/formats/xlsx/model/workbook.ts +0 -449
- package/src/io/README.md +0 -10
- package/src/io/docx-session.ts +0 -1763
- package/src/io/export/README.md +0 -3
- package/src/io/export/export-session.ts +0 -165
- package/src/io/export/minimal-docx.ts +0 -115
- package/src/io/export/reattach-preserved-parts.ts +0 -54
- package/src/io/export/serialize-comments.ts +0 -876
- package/src/io/export/serialize-footnotes.ts +0 -217
- package/src/io/export/serialize-headers-footers.ts +0 -200
- package/src/io/export/serialize-main-document.ts +0 -982
- package/src/io/export/serialize-numbering.ts +0 -97
- package/src/io/export/serialize-revisions.ts +0 -389
- package/src/io/export/serialize-runtime-revisions.ts +0 -265
- package/src/io/export/serialize-tables.ts +0 -147
- package/src/io/export/split-review-boundaries.ts +0 -194
- package/src/io/normalize/README.md +0 -3
- package/src/io/normalize/normalize-text.ts +0 -437
- package/src/io/ooxml/README.md +0 -3
- package/src/io/ooxml/parse-comments.ts +0 -779
- package/src/io/ooxml/parse-complex-content.ts +0 -287
- package/src/io/ooxml/parse-fields.ts +0 -438
- package/src/io/ooxml/parse-footnotes.ts +0 -403
- package/src/io/ooxml/parse-headers-footers.ts +0 -483
- package/src/io/ooxml/parse-inline-media.ts +0 -431
- package/src/io/ooxml/parse-main-document.ts +0 -1846
- package/src/io/ooxml/parse-numbering.ts +0 -425
- package/src/io/ooxml/parse-revisions.ts +0 -658
- package/src/io/ooxml/parse-shapes.ts +0 -271
- package/src/io/ooxml/parse-tables.ts +0 -568
- package/src/io/ooxml/parse-theme.ts +0 -314
- package/src/io/ooxml/part-manifest.ts +0 -136
- package/src/io/ooxml/revision-boundaries.ts +0 -351
- package/src/io/opc/README.md +0 -3
- package/src/io/opc/corrupt-package.ts +0 -166
- package/src/io/opc/docx-package.ts +0 -74
- package/src/io/opc/package-reader.ts +0 -320
- package/src/io/opc/package-writer.ts +0 -273
- package/src/model/README.md +0 -3
- package/src/model/canonical-document.ts +0 -1911
- package/src/model/cds-1.0.0.ts +0 -196
- package/src/model/snapshot.ts +0 -393
- package/src/preservation/README.md +0 -3
- package/src/preservation/markup-compatibility.ts +0 -48
- package/src/preservation/opaque-fragment-store.ts +0 -89
- package/src/preservation/opaque-region.ts +0 -233
- package/src/preservation/package-preservation.ts +0 -120
- package/src/preservation/preserved-part-manifest.ts +0 -56
- package/src/preservation/relationship-retention.ts +0 -57
- package/src/preservation/store.ts +0 -185
- package/src/review/README.md +0 -16
- package/src/review/store/README.md +0 -3
- package/src/review/store/comment-anchors.ts +0 -70
- package/src/review/store/comment-remapping.ts +0 -154
- package/src/review/store/comment-store.ts +0 -331
- package/src/review/store/comment-thread.ts +0 -109
- package/src/review/store/revision-actions.ts +0 -394
- package/src/review/store/revision-store.ts +0 -303
- package/src/review/store/revision-types.ts +0 -168
- package/src/review/store/runtime-comment-store.ts +0 -43
- package/src/runtime/README.md +0 -3
- package/src/runtime/ai-action-policy.ts +0 -764
- package/src/runtime/document-runtime.ts +0 -969
- package/src/runtime/read-only-diagnostics-runtime.ts +0 -232
- package/src/runtime/review-runtime.ts +0 -44
- package/src/runtime/revision-runtime.ts +0 -107
- package/src/runtime/session-capabilities.ts +0 -138
- package/src/runtime/surface-projection.ts +0 -570
- package/src/runtime/table-commands.ts +0 -84
- package/src/runtime/table-schema.ts +0 -125
- package/src/ui/README.md +0 -30
- package/src/ui/WordReviewEditor.tsx +0 -1283
- package/src/ui/comments/README.md +0 -3
- package/src/ui/compatibility/README.md +0 -3
- package/src/ui/editor-surface/README.md +0 -3
- package/src/ui/headless/comment-decoration-model.ts +0 -124
- package/src/ui/headless/revision-decoration-model.ts +0 -128
- package/src/ui/headless/selection-helpers.ts +0 -34
- package/src/ui/headless/use-editor-keyboard.ts +0 -98
- package/src/ui/review/README.md +0 -3
- package/src/ui/shared/revision-filters.ts +0 -31
- package/src/ui/status/README.md +0 -3
- package/src/ui/theme/README.md +0 -3
- package/src/ui/toolbar/README.md +0 -3
- package/src/ui-tailwind/chrome/tw-alert-banner.tsx +0 -48
- package/src/ui-tailwind/chrome/tw-selection-toolbar.tsx +0 -44
- package/src/ui-tailwind/chrome/tw-unsaved-modal.tsx +0 -58
- package/src/ui-tailwind/chrome/use-before-unload.ts +0 -20
- package/src/ui-tailwind/editor-surface/pm-command-bridge.ts +0 -139
- package/src/ui-tailwind/editor-surface/pm-decorations.ts +0 -98
- package/src/ui-tailwind/editor-surface/pm-position-map.ts +0 -123
- package/src/ui-tailwind/editor-surface/pm-schema.ts +0 -452
- package/src/ui-tailwind/editor-surface/pm-state-from-snapshot.ts +0 -327
- package/src/ui-tailwind/editor-surface/search-plugin.ts +0 -157
- package/src/ui-tailwind/editor-surface/tw-caret.tsx +0 -12
- package/src/ui-tailwind/editor-surface/tw-editor-surface.tsx +0 -150
- package/src/ui-tailwind/editor-surface/tw-inline-token.tsx +0 -118
- package/src/ui-tailwind/editor-surface/tw-opaque-block.tsx +0 -52
- package/src/ui-tailwind/editor-surface/tw-paragraph-block.tsx +0 -151
- package/src/ui-tailwind/editor-surface/tw-prosemirror-surface.tsx +0 -215
- package/src/ui-tailwind/editor-surface/tw-segment-view.tsx +0 -111
- package/src/ui-tailwind/editor-surface/tw-table-node-view.tsx +0 -108
- package/src/ui-tailwind/index.ts +0 -61
- package/src/ui-tailwind/review/tw-comment-sidebar.tsx +0 -276
- package/src/ui-tailwind/review/tw-health-panel.tsx +0 -120
- package/src/ui-tailwind/review/tw-review-rail.tsx +0 -120
- package/src/ui-tailwind/review/tw-revision-sidebar.tsx +0 -164
- package/src/ui-tailwind/status/tw-status-bar.tsx +0 -58
- package/src/ui-tailwind/theme/editor-theme.css +0 -190
- package/src/ui-tailwind/toolbar/tw-toolbar-icon-button.tsx +0 -48
- package/src/ui-tailwind/toolbar/tw-toolbar.tsx +0 -231
- package/src/ui-tailwind/tw-review-workspace.tsx +0 -140
- package/src/validation/README.md +0 -3
- package/src/validation/compatibility-engine.ts +0 -317
- package/src/validation/compatibility-report.ts +0 -160
- package/src/validation/diagnostics.ts +0 -203
- package/src/validation/import-diagnostics.ts +0 -128
- package/src/validation/low-priority-word-surfaces.ts +0 -373
- 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,479 +0,0 @@
|
|
|
1
|
-
# Word Review Editor — Frontend Architecture
|
|
2
|
-
|
|
3
|
-
This document is the canonical reference for the frontend implementation architecture of the React Word Editor. It governs how the design principles in `DESIGN.md` are realized in code.
|
|
4
|
-
|
|
5
|
-
It remains a docx-specific implementation reference inside the broader `react-ooxml-office` repo. It is not the umbrella architecture for future xlsx or pdf work.
|
|
6
|
-
|
|
7
|
-
Use this together with:
|
|
8
|
-
|
|
9
|
-
- `DESIGN.md` for visual design, interaction style, and layout principles
|
|
10
|
-
- `docs/reference/word-review-editor-ux-guide.md` for UX patterns and review workflow
|
|
11
|
-
- `src/api/public-types.ts` for the runtime data contracts
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. Rendering Stack
|
|
16
|
-
|
|
17
|
-
| Layer | Technology | Purpose |
|
|
18
|
-
|-------|-----------|---------|
|
|
19
|
-
| Layout and styling | Tailwind CSS v4 | Utility-first classes referencing CSS custom properties |
|
|
20
|
-
| Primitives | Radix UI | Accessible, unstyled building blocks (tabs, selects, tooltips, toggles, scroll areas) |
|
|
21
|
-
| Icons | Lucide React | Consistent, tree-shakable icon library |
|
|
22
|
-
| Theme | CSS custom properties | Portable `@theme` block in `editor-theme.css` — consumers override variables for custom themes |
|
|
23
|
-
| Dark mode | `.dark` class | Scoped to the editor root element, not `document.documentElement` |
|
|
24
|
-
| Reduced motion | `data-reduced-motion` attribute | CSS rule disables all transitions and animations within editor scope |
|
|
25
|
-
|
|
26
|
-
**No inline `CSSProperties` objects.** All styling uses Tailwind utility classes. Colors reference CSS variables (`text-primary`, `bg-canvas`, `border-border`, etc.) which resolve through the `@theme` block.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 2. Directory Structure
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
src/
|
|
34
|
-
ui/
|
|
35
|
-
headless/ # Pure logic — no rendering, no framework deps
|
|
36
|
-
use-editor-keyboard.ts # Keyboard event handler factory
|
|
37
|
-
comment-decoration-model.ts # Comment anchor → highlight computation
|
|
38
|
-
revision-decoration-model.ts # Revision anchor → highlight computation
|
|
39
|
-
selection-helpers.ts # Selection snapshot utilities
|
|
40
|
-
shared/ # Shared presentational utilities
|
|
41
|
-
revision-filters.ts # selectVisibleRevisions, describeEmptyRevisionState
|
|
42
|
-
summary-chip.tsx # Shared summary chip used by the review rail
|
|
43
|
-
|
|
44
|
-
ui-tailwind/ # Styled components — Tailwind + Radix + Lucide
|
|
45
|
-
theme/
|
|
46
|
-
editor-theme.css # Portable CSS: @theme block, .dark overrides, animations
|
|
47
|
-
editor-surface/
|
|
48
|
-
tw-prosemirror-surface.tsx # Default mounted ProseMirror contentEditable surface
|
|
49
|
-
pm-schema.ts # ProseMirror schema for the owned editor slice
|
|
50
|
-
pm-state-from-snapshot.ts # Runtime snapshot -> ProseMirror state
|
|
51
|
-
pm-command-bridge.ts # ProseMirror input -> runtime commands/selection
|
|
52
|
-
pm-decorations.ts # Comment/revision decorations and clean-mode hiding
|
|
53
|
-
pm-position-map.ts # Runtime <-> ProseMirror position mapping
|
|
54
|
-
tw-inline-token.tsx # Tab, break, image, opaque inline tokens
|
|
55
|
-
tw-paragraph-block.tsx # Paragraph block with heading detection
|
|
56
|
-
tw-opaque-block.tsx # Locked region rendering
|
|
57
|
-
tw-segment-view.tsx # Legacy segment renderer (not the default mounted path)
|
|
58
|
-
tw-caret.tsx # Legacy caret renderer for the older surface path
|
|
59
|
-
tw-editor-surface.tsx # Legacy non-default surface retained during migration
|
|
60
|
-
review/
|
|
61
|
-
tw-comment-sidebar.tsx # Comment thread cards
|
|
62
|
-
tw-revision-sidebar.tsx # Tracked change cards with accept/reject
|
|
63
|
-
tw-health-panel.tsx # Compatibility and warning entries
|
|
64
|
-
tw-review-rail.tsx # Tabbed rail container (comments/changes)
|
|
65
|
-
toolbar/
|
|
66
|
-
tw-toolbar.tsx # Main toolbar
|
|
67
|
-
tw-toolbar-icon-button.tsx # Reusable icon button with tooltip
|
|
68
|
-
status/
|
|
69
|
-
tw-status-bar.tsx # Bottom status strip
|
|
70
|
-
chrome/
|
|
71
|
-
tw-alert-banner.tsx # Fatal/blocked/warning banners
|
|
72
|
-
tw-selection-toolbar.tsx # Floating contextual toolbar on text selection
|
|
73
|
-
tw-review-workspace.tsx # Main workspace shell composing all chrome
|
|
74
|
-
index.ts # Barrel export
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## 3. Component Hierarchy
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
WordReviewEditor
|
|
83
|
-
└── TwReviewWorkspace
|
|
84
|
-
├── TwToolbar
|
|
85
|
-
│ ├── TwToolbarIconButton (undo, redo)
|
|
86
|
-
│ ├── TwToolbarIconButton (comment)
|
|
87
|
-
│ ├── Radix Toggle (show/hide tracked changes — display only)
|
|
88
|
-
│ ├── Radix ToggleGroup (view mode: canvas/document)
|
|
89
|
-
│ ├── Health indicator (Radix Popover with TwHealthPanel)
|
|
90
|
-
│ └── TwToolbarIconButton (export)
|
|
91
|
-
├── TwAlertBanner (conditional: fatal, blocked, warning)
|
|
92
|
-
├── Document Column
|
|
93
|
-
│ ├── TwSelectionToolbar (conditional: comment button + preview)
|
|
94
|
-
│ ├── TwProseMirrorSurface (ProseMirror contentEditable)
|
|
95
|
-
│ │ ├── pm-schema.ts (document schema)
|
|
96
|
-
│ │ ├── pm-state-from-snapshot.ts (snapshot → PM state)
|
|
97
|
-
│ │ ├── pm-command-bridge.ts (input → runtime commands)
|
|
98
|
-
│ │ ├── pm-decorations.ts (comment/revision highlights)
|
|
99
|
-
│ │ └── pm-position-map.ts (runtime ↔ PM positions)
|
|
100
|
-
│ └── TwStatusBar
|
|
101
|
-
└── TwReviewRail
|
|
102
|
-
├── Radix Tabs (comments / changes)
|
|
103
|
-
├── TwCommentSidebar (comments tab)
|
|
104
|
-
└── TwRevisionSidebar (changes tab)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 4. Data Flow
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
┌──────────────────────┐
|
|
113
|
-
│ DocumentRuntime │
|
|
114
|
-
│ (src/runtime/) │
|
|
115
|
-
└──────┬───────────────┘
|
|
116
|
-
│ subscribe()
|
|
117
|
-
▼
|
|
118
|
-
RuntimeRenderSnapshot
|
|
119
|
-
│
|
|
120
|
-
▼
|
|
121
|
-
WordReviewEditor
|
|
122
|
-
(useSyncExternalStore)
|
|
123
|
-
│
|
|
124
|
-
┌────────────┼────────────┐
|
|
125
|
-
▼ ▼ ▼
|
|
126
|
-
TwToolbar TwProseMirrorSurface TwReviewRail
|
|
127
|
-
(reads (reads surface, (reads comments,
|
|
128
|
-
commandState) selection) trackedChanges,
|
|
129
|
-
compatibility)
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
**Rules:**
|
|
133
|
-
- UI components receive `RuntimeRenderSnapshot` (or slices of it) as props
|
|
134
|
-
- UI components NEVER hold a second copy of canonical document state
|
|
135
|
-
- All mutations flow through `DocumentRuntime` via callbacks (`onUndo`, `onAddComment`, `onAcceptRevision`, etc.)
|
|
136
|
-
- UI-local state is limited to: focus, hover, panel openness, active tab, markup display mode, view mode, dark mode toggle
|
|
137
|
-
|
|
138
|
-
### Planned AI action flow
|
|
139
|
-
|
|
140
|
-
Future AI integration is reserved as a runtime-mediated flow, not a second editing
|
|
141
|
-
stack:
|
|
142
|
-
|
|
143
|
-
```text
|
|
144
|
-
Host AI adapter / action executor
|
|
145
|
-
|
|
|
146
|
-
v
|
|
147
|
-
WordReviewEditor entry point
|
|
148
|
-
|
|
|
149
|
-
v
|
|
150
|
-
DocumentRuntime
|
|
151
|
-
(selection/context packaging,
|
|
152
|
-
capability checks, validation)
|
|
153
|
-
|
|
|
154
|
-
v
|
|
155
|
-
proposal / confirmation surface
|
|
156
|
-
|
|
|
157
|
-
v
|
|
158
|
-
runtime commands or workflows
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Rules for the planned AI surface:
|
|
162
|
-
|
|
163
|
-
- toolbar buttons, contextual selection tools, or review actions may launch AI requests
|
|
164
|
-
- the runtime remains the sole mutation authority
|
|
165
|
-
- action status and result reporting should come back through runtime-owned events or state, not optimistic local component state
|
|
166
|
-
- AI proposals must be reviewed and confirmed before content-changing application
|
|
167
|
-
- validate/export workflows still pass through the normal runtime compatibility gates
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## 5. Editing Model
|
|
172
|
-
|
|
173
|
-
The default mounted surface uses **ProseMirror contentEditable**, not
|
|
174
|
-
button-per-character rendering.
|
|
175
|
-
|
|
176
|
-
The ownership split is intentional:
|
|
177
|
-
|
|
178
|
-
| Layer | Owns |
|
|
179
|
-
|------|------|
|
|
180
|
-
| `TwProseMirrorSurface` | DOM editing, native selection, IME/input composition, rendered decorations |
|
|
181
|
-
| `pm-state-from-snapshot.ts` | snapshot -> ProseMirror document/state projection |
|
|
182
|
-
| `pm-command-bridge.ts` | translating ProseMirror edits and selections into runtime commands/callbacks |
|
|
183
|
-
| `DocumentRuntime` | canonical state, command semantics, review logic, history, validation, import/export |
|
|
184
|
-
|
|
185
|
-
Editing rules:
|
|
186
|
-
|
|
187
|
-
- ProseMirror is a rendering and input surface, not the source of truth
|
|
188
|
-
- runtime commands remain authoritative for canonical mutations
|
|
189
|
-
- selection changes are projected back into `SelectionSnapshot` shape for the rest of the app
|
|
190
|
-
- `pm-position-map.ts` is the contract layer between runtime coordinates and ProseMirror positions
|
|
191
|
-
- legacy segment-based renderer files may remain in the tree during migration, but the mounted default path is `TwProseMirrorSurface`
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## 6. Decoration Model
|
|
196
|
-
|
|
197
|
-
Comment and revision highlights are computed in the ProseMirror layer from
|
|
198
|
-
runtime-owned anchor projections. The editor does not pre-bake highlight state
|
|
199
|
-
into the canonical document model.
|
|
200
|
-
|
|
201
|
-
Current rules:
|
|
202
|
-
|
|
203
|
-
- `pm-decorations.ts` builds comment and revision decorations from runtime projections
|
|
204
|
-
- clean mode always hides deletions; the tracked-changes visibility toggle only suppresses styling, not the clean-mode deletion elision
|
|
205
|
-
- interactive decoration wrappers carry comment/revision ids so clicks can activate the matching sidebar item
|
|
206
|
-
- active-comment and active-revision emphasis comes from runtime truth, not local DOM bookkeeping
|
|
207
|
-
|
|
208
|
-
Markup-display intent still follows the same UI contract:
|
|
209
|
-
|
|
210
|
-
| Mode | Comment treatment | Revision treatment |
|
|
211
|
-
|------|-------------------|-------------------|
|
|
212
|
-
| `clean` | hide most comment chrome, keep active context discoverable | hide deleted text and suppress markup-heavy chrome |
|
|
213
|
-
| `simple` | lightweight review emphasis | lightweight insertion/deletion emphasis |
|
|
214
|
-
| `all` | strongest inline review visibility | strongest inline review visibility |
|
|
215
|
-
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## 7. Theme Contract
|
|
219
|
-
|
|
220
|
-
### CSS custom properties
|
|
221
|
-
|
|
222
|
-
All visual values are defined as CSS custom properties in `editor-theme.css`:
|
|
223
|
-
|
|
224
|
-
```css
|
|
225
|
-
@theme {
|
|
226
|
-
/* Backgrounds */
|
|
227
|
-
--color-surface: #f7f7f5;
|
|
228
|
-
--color-canvas: #ffffff;
|
|
229
|
-
--color-card: #faf8f2;
|
|
230
|
-
--color-shell-bg: #f3efe7;
|
|
231
|
-
--color-editor-frame: #f6f3ee;
|
|
232
|
-
|
|
233
|
-
/* Text */
|
|
234
|
-
--color-primary: #1f1f1f;
|
|
235
|
-
--color-secondary: #6b6b6b;
|
|
236
|
-
--color-tertiary: #616161;
|
|
237
|
-
|
|
238
|
-
/* Accent */
|
|
239
|
-
--color-accent: #1660a8;
|
|
240
|
-
|
|
241
|
-
/* Review */
|
|
242
|
-
--color-comment: #7a4f00;
|
|
243
|
-
--color-insert: #1a7f37;
|
|
244
|
-
--color-delete: #cf222e;
|
|
245
|
-
|
|
246
|
-
/* Semantic */
|
|
247
|
-
--color-warning: #7a4f00;
|
|
248
|
-
--color-danger: #cf222e;
|
|
249
|
-
--color-success: #1a7f37;
|
|
250
|
-
|
|
251
|
-
/* Borders & shadows */
|
|
252
|
-
--color-border: rgba(0, 0, 0, 0.06);
|
|
253
|
-
--color-shadow: rgba(16, 24, 40, 0.08);
|
|
254
|
-
|
|
255
|
-
/* Typography */
|
|
256
|
-
--font-legal-serif: "Source Serif 4", Georgia, serif;
|
|
257
|
-
--font-legal-sans: "Inter", system-ui, sans-serif;
|
|
258
|
-
--font-legal-mono: "JetBrains Mono", monospace;
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Dark mode
|
|
263
|
-
|
|
264
|
-
Override variables under `.dark`:
|
|
265
|
-
|
|
266
|
-
```css
|
|
267
|
-
.dark {
|
|
268
|
-
--color-surface: #1e1e1e;
|
|
269
|
-
--color-canvas: #191919;
|
|
270
|
-
--color-primary: #e4e4e4;
|
|
271
|
-
--color-accent: #4ca6f0;
|
|
272
|
-
--color-comment: #d4a020;
|
|
273
|
-
--color-insert: #3fb950;
|
|
274
|
-
--color-delete: #f85149;
|
|
275
|
-
/* ... full palette inversion */
|
|
276
|
-
}
|
|
277
|
-
```
|
|
278
|
-
|
|
279
|
-
Applied via scoped class on the editor root:
|
|
280
|
-
|
|
281
|
-
```tsx
|
|
282
|
-
<div className={darkMode ? "dark" : undefined}>
|
|
283
|
-
<TwReviewWorkspace ... />
|
|
284
|
-
</div>
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Custom themes
|
|
288
|
-
|
|
289
|
-
Consumers override CSS variables in their own stylesheet:
|
|
290
|
-
|
|
291
|
-
```css
|
|
292
|
-
.my-brand-theme {
|
|
293
|
-
--color-accent: #8b5cf6;
|
|
294
|
-
--color-surface: #fafaf9;
|
|
295
|
-
--font-legal-sans: "My Brand Font", sans-serif;
|
|
296
|
-
}
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
Then wrap the editor:
|
|
300
|
-
|
|
301
|
-
```tsx
|
|
302
|
-
<div className="my-brand-theme">
|
|
303
|
-
<WordReviewEditor ... />
|
|
304
|
-
</div>
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## 8. Markup Display Modes
|
|
310
|
-
|
|
311
|
-
| Mode | Purpose | Document font | Comment decorations | Revision decorations | Margin indicators |
|
|
312
|
-
|------|---------|---------------|--------------------|--------------------|-------------------|
|
|
313
|
-
| **clean** | Undistracted reading | Sans-serif | Hidden (active only: subtle bg) | Hidden (deletions removed) | Comment dots only |
|
|
314
|
-
| **simple** | Subtle review chrome | Serif | Underline decorations | Underline (insert) / strikethrough (delete) | Colored left border |
|
|
315
|
-
| **all** | Full markup visibility | Serif | Background wash | Colored backgrounds + text | Not needed (inline sufficient) |
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
## 9. Radix UI Component Usage
|
|
320
|
-
|
|
321
|
-
| Radix Primitive | Usage | Component |
|
|
322
|
-
|----------------|-------|-----------|
|
|
323
|
-
| `Tabs` | Review rail navigation (comments/changes) | `TwReviewRail` |
|
|
324
|
-
| `Toggle` | Show/hide tracked changes (display only) | `TwToolbar` |
|
|
325
|
-
| `ToggleGroup` | View mode (canvas/document) | `TwToolbar` |
|
|
326
|
-
| `Popover` | Health indicator with TwHealthPanel | `TwToolbar` |
|
|
327
|
-
| `Tooltip` | All icon buttons, interactive elements | `TwToolbarIconButton` |
|
|
328
|
-
| `ScrollArea` | Review rail scrollable content | `TwReviewRail` |
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
## 10. Accessibility
|
|
333
|
-
|
|
334
|
-
- **Focus ring**: `focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-canvas` on all interactive elements
|
|
335
|
-
- **Tab order**: Toolbar → document surface → review rail tabs → rail content
|
|
336
|
-
- **Document surface**: ProseMirror root with `role="textbox"` and `aria-multiline="true"` on the mounted editable surface
|
|
337
|
-
- **Inline review affordances**: pointer-activatable in the document, with accessible companion actions in the rail and toolbar
|
|
338
|
-
- **Rail tabs**: `role="tablist"` with `aria-selected`, arrow key navigation
|
|
339
|
-
- **Landmark regions**: `aria-label` on `<section>`, `<aside>`, `<header>`
|
|
340
|
-
- **Reduced motion**: `data-reduced-motion="true"` disables all animations and transitions
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## 11. Responsive Behavior
|
|
345
|
-
|
|
346
|
-
- **Below 1024px**: Review rail collapses (hidden, accessible via toggle)
|
|
347
|
-
- **Toolbar**: `flex-wrap` allows natural wrapping on narrow viewports
|
|
348
|
-
- **Document canvas**: `max-w-[780px] mx-auto` for readability
|
|
349
|
-
- **Page view mode**: Additional `rounded-xl ring-1 ring-border shadow-sm` frame
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## 12. Public API Surface
|
|
354
|
-
|
|
355
|
-
The shipped `WordReviewEditor` component exposes the Tailwind workspace by default while keeping the existing public API contract:
|
|
356
|
-
|
|
357
|
-
```typescript
|
|
358
|
-
// Props (input)
|
|
359
|
-
interface WordReviewEditorProps {
|
|
360
|
-
documentId: string;
|
|
361
|
-
currentUser: EditorUser;
|
|
362
|
-
initialDocx?: Uint8Array | ArrayBuffer;
|
|
363
|
-
initialSnapshot?: PersistedEditorSnapshot;
|
|
364
|
-
externalDocumentRevision?: string;
|
|
365
|
-
externalDocSource?: ExternalDocumentSource;
|
|
366
|
-
reviewMode?: "editing" | "review";
|
|
367
|
-
markupDisplay?: "clean" | "simple" | "all";
|
|
368
|
-
readOnly?: boolean;
|
|
369
|
-
datastore?: EditorDatastoreAdapter;
|
|
370
|
-
autosave?: AutosaveConfig;
|
|
371
|
-
onEvent?: (event: WordReviewEditorEvent) => void;
|
|
372
|
-
onWarning?: (warning: EditorWarning) => void;
|
|
373
|
-
onError?: (error: EditorError) => void;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
// Ref (imperative handle)
|
|
377
|
-
interface WordReviewEditorRef {
|
|
378
|
-
focus(): void;
|
|
379
|
-
blur(): void;
|
|
380
|
-
undo(): void;
|
|
381
|
-
redo(): void;
|
|
382
|
-
addComment(params): string;
|
|
383
|
-
openComment(commentId): void;
|
|
384
|
-
resolveComment(commentId): void;
|
|
385
|
-
reopenComment(commentId): void;
|
|
386
|
-
addCommentReply(commentId, body): void;
|
|
387
|
-
editCommentBody(commentId, body): void;
|
|
388
|
-
acceptChange(changeId): void;
|
|
389
|
-
rejectChange(changeId): void;
|
|
390
|
-
acceptAllChanges(): void;
|
|
391
|
-
rejectAllChanges(): void;
|
|
392
|
-
exportDocx(options?): Promise<ExportResult>;
|
|
393
|
-
getSnapshot(): PersistedEditorSnapshot;
|
|
394
|
-
getCompatibilityReport(): CompatibilityReport;
|
|
395
|
-
getWarnings(): EditorWarning[];
|
|
396
|
-
}
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
`viewMode` is internal workspace state, not a public prop on
|
|
400
|
-
`WordReviewEditorProps`. See `docs/reference/public-api.md` for the
|
|
401
|
-
authoritative public contract, including the planned post-v1 AI extension.
|
|
402
|
-
|
|
403
|
-
---
|
|
404
|
-
|
|
405
|
-
## 13. Migration Status
|
|
406
|
-
|
|
407
|
-
1. **Tailwind shell is the default**: `src/ui/WordReviewEditor` renders the `TwReviewWorkspace` path by default.
|
|
408
|
-
2. **Harness and mounted routes are aligned**: Demo and editor routes use the same shared workspace architecture.
|
|
409
|
-
3. **Legacy inline-CSS surfaces are removed**: New UI work should land in `src/ui-tailwind/` plus `src/ui/headless/`.
|
|
410
|
-
4. **Future expansion stays on one shell**: Wave 10+ UX, certification, and post-v1 capability work should extend the current mounted workspace rather than introduce a parallel renderer.
|
|
411
|
-
|
|
412
|
-
---
|
|
413
|
-
|
|
414
|
-
## 14. What This Architecture Replaces
|
|
415
|
-
|
|
416
|
-
The legacy `src/ui/` implementation used:
|
|
417
|
-
- 200+ inline `CSSProperties` style constants
|
|
418
|
-
- `uiColors` / `uiFonts` design token objects referencing CSS variables
|
|
419
|
-
- Per-component `palette` objects for semantic color mapping
|
|
420
|
-
- No external CSS framework — all styling in TypeScript
|
|
421
|
-
|
|
422
|
-
This architecture replaces it with:
|
|
423
|
-
- Tailwind utility classes (no style constants)
|
|
424
|
-
- CSS custom properties in a portable `@theme` block
|
|
425
|
-
- Radix UI for accessible primitives
|
|
426
|
-
- Lucide React for consistent icons
|
|
427
|
-
- Headless logic hooks shared between implementations
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
## 15. Session Capabilities Model
|
|
432
|
-
|
|
433
|
-
All UI control states are derived from `RuntimeRenderSnapshot` via `deriveCapabilities()` in `src/runtime/session-capabilities.ts`.
|
|
434
|
-
|
|
435
|
-
### SessionCapabilities interface
|
|
436
|
-
|
|
437
|
-
```typescript
|
|
438
|
-
interface SessionCapabilities {
|
|
439
|
-
phase: "loading" | "ready" | "diagnostics" | "error";
|
|
440
|
-
mode: "editing" | "review" | "read-only-diagnostics";
|
|
441
|
-
canUndo: boolean;
|
|
442
|
-
canRedo: boolean;
|
|
443
|
-
canEdit: boolean;
|
|
444
|
-
canAddComment: boolean;
|
|
445
|
-
canExport: boolean;
|
|
446
|
-
canAcceptChange: boolean;
|
|
447
|
-
canRejectChange: boolean;
|
|
448
|
-
canAcceptAll: boolean;
|
|
449
|
-
canRejectAll: boolean;
|
|
450
|
-
reviewRailVisible: boolean;
|
|
451
|
-
trackChangesSupported: boolean;
|
|
452
|
-
exportBlocked: boolean;
|
|
453
|
-
preserveOnlyCount: number;
|
|
454
|
-
unsupportedFatalCount: number;
|
|
455
|
-
isDirty: boolean;
|
|
456
|
-
isReady: boolean;
|
|
457
|
-
hasFatalError: boolean;
|
|
458
|
-
}
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
### Derivation rules
|
|
462
|
-
|
|
463
|
-
- `phase` derived from `isReady` and `fatalError`
|
|
464
|
-
- `mode` overrides requested `reviewMode` when diagnostics are active
|
|
465
|
-
- `canEdit` requires `isReady && !readOnly && !fatalError`
|
|
466
|
-
- `canAddComment` requires `canEdit && !selection.isCollapsed`
|
|
467
|
-
- `canExport` requires `isReady && !blockExport && !fatalError`
|
|
468
|
-
- `reviewRailVisible` is true in `review` and `read-only-diagnostics` modes, false in `editing`
|
|
469
|
-
- `trackChangesSupported` is true when `trackedChanges.totalCount > 0`
|
|
470
|
-
|
|
471
|
-
### reviewMode behavior
|
|
472
|
-
|
|
473
|
-
- `"editing"`: Review rail hidden by default, editing controls primary
|
|
474
|
-
- `"review"`: Review rail visible, comments/changes accessible, and health/trust surfaces remain reachable from toolbar chrome
|
|
475
|
-
- Both modes: health/trust info always reachable, fatal errors always visible
|
|
476
|
-
|
|
477
|
-
### Track changes display toggle
|
|
478
|
-
|
|
479
|
-
The toolbar "Show/Hide tracked changes" toggle controls decoration visibility, not runtime mutation recording. The runtime always tracks changes internally. This is an honest display toggle, not a fake mode switch.
|