Jason's Q168: a visual editor for the Console's project documents, held to row 148's rendering rules. Library. ProseMirror with prosemirror-markdown and markdown-it, chosen in the phase 1 library report (LIBRARY.md, REPORT.md in the packet). packages/webui/third_party/editor/ holds 19 upstream packages as source, byte for byte, each with its license, plus NOTICE and PROVENANCE.json. Build. packages/webui/editor/ holds the model, view, entry and build.mjs. esbuild 0.28.2 is an exact devDependency of packages/webui with its own lock; editor/toolchain.mjs checks the version and the binary's sha256 before any build. MOSAIC_REQUIRE_EDITOR_BUILD=1 turns a missing or different esbuild into a failure, and the rebuild test then checks the committed src/public/editor.js and editor.css match a fresh build. The built bundle is committed under Mos's conditions (mos-0755, mos-0765). Console. The docs view gets Visual and Source modes. A save still writes Markdown through the existing project write path, with the same stale-base and read-only handling. A mode switch reuses the draft and reads nothing from the project. Links and images keep row 148's target rules, and no raw HTML runs. serve.mjs serves /editor.js and /editor.css; index.html loads them. Owner Researcher, brief docs/plans/2026-10-16_q168-wysiwyg-editor.md. Round 5 is a rebase ontod88613bac(row 155); only docs/TOOLS.md, webui/README.md, public/bus.js and serve.mjs differ from the round before. Reviewers on candidate manifest 3a4bc21c...3b05: Dewey (security) approve 29027, Filbert approve 29026. Mos's decision 123 go for public.diff 902f0244 (handwritten part ea59079e): mos-0824. Sage gate on72c3fa598with MOSAIC_REQUIRE_EDITOR_BUILD=1: GATE_PASSED 25/25 (node 2397, selftests 422), 22:07:29Z to 22:13:50Z; the rebuild test ran and passed. Nothing live.
151 lines
8.3 KiB
JSON
151 lines
8.3 KiB
JSON
{
|
|
"schema": 1,
|
|
"esbuild": "0.28.2",
|
|
"options": "bundle, iife, es2022, browser, legal-comments inline, unminified; aliases in editor/build.mjs",
|
|
"outputs": {
|
|
"src/public/editor.js": {
|
|
"sha256": "9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee",
|
|
"bytes": 758420
|
|
},
|
|
"src/public/editor.css": {
|
|
"sha256": "8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f",
|
|
"bytes": 4462
|
|
}
|
|
},
|
|
"inputs": [
|
|
"editor/entry.mjs",
|
|
"editor/model.mjs",
|
|
"editor/view.mjs",
|
|
"third_party/editor/entities/src/decode.ts",
|
|
"third_party/editor/entities/src/decode_codepoint.ts",
|
|
"third_party/editor/entities/src/encode.ts",
|
|
"third_party/editor/entities/src/escape.ts",
|
|
"third_party/editor/entities/src/generated/decode-data-html.ts",
|
|
"third_party/editor/entities/src/generated/decode-data-xml.ts",
|
|
"third_party/editor/entities/src/generated/encode-html.ts",
|
|
"third_party/editor/entities/src/index.ts",
|
|
"third_party/editor/linkify-it/index.mjs",
|
|
"third_party/editor/linkify-it/lib/re.mjs",
|
|
"third_party/editor/markdown-it/index.mjs",
|
|
"third_party/editor/markdown-it/lib/common/html_blocks.mjs",
|
|
"third_party/editor/markdown-it/lib/common/html_re.mjs",
|
|
"third_party/editor/markdown-it/lib/common/utils.mjs",
|
|
"third_party/editor/markdown-it/lib/helpers/index.mjs",
|
|
"third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs",
|
|
"third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs",
|
|
"third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs",
|
|
"third_party/editor/markdown-it/lib/index.mjs",
|
|
"third_party/editor/markdown-it/lib/parser_block.mjs",
|
|
"third_party/editor/markdown-it/lib/parser_core.mjs",
|
|
"third_party/editor/markdown-it/lib/parser_inline.mjs",
|
|
"third_party/editor/markdown-it/lib/presets/commonmark.mjs",
|
|
"third_party/editor/markdown-it/lib/presets/default.mjs",
|
|
"third_party/editor/markdown-it/lib/presets/zero.mjs",
|
|
"third_party/editor/markdown-it/lib/renderer.mjs",
|
|
"third_party/editor/markdown-it/lib/ruler.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/blockquote.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/code.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/fence.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/heading.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/hr.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/html_block.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/lheading.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/list.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/paragraph.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/reference.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/state_block.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_block/table.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/block.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/inline.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/linkify.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/normalize.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/replacements.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/state_core.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_core/text_join.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/autolink.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/backticks.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/entity.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/escape.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/image.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/link.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/linkify.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/newline.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs",
|
|
"third_party/editor/markdown-it/lib/rules_inline/text.mjs",
|
|
"third_party/editor/markdown-it/lib/token.mjs",
|
|
"third_party/editor/mdurl/index.mjs",
|
|
"third_party/editor/mdurl/lib/decode.mjs",
|
|
"third_party/editor/mdurl/lib/encode.mjs",
|
|
"third_party/editor/mdurl/lib/format.mjs",
|
|
"third_party/editor/mdurl/lib/parse.mjs",
|
|
"third_party/editor/orderedmap/index.js",
|
|
"third_party/editor/prosemirror-commands/src/commands.ts",
|
|
"third_party/editor/prosemirror-history/src/history.ts",
|
|
"third_party/editor/prosemirror-inputrules/src/index.ts",
|
|
"third_party/editor/prosemirror-inputrules/src/inputrules.ts",
|
|
"third_party/editor/prosemirror-inputrules/src/rulebuilders.ts",
|
|
"third_party/editor/prosemirror-inputrules/src/rules.ts",
|
|
"third_party/editor/prosemirror-keymap/src/keymap.ts",
|
|
"third_party/editor/prosemirror-markdown/src/from_markdown.ts",
|
|
"third_party/editor/prosemirror-markdown/src/index.ts",
|
|
"third_party/editor/prosemirror-markdown/src/schema.ts",
|
|
"third_party/editor/prosemirror-markdown/src/to_markdown.ts",
|
|
"third_party/editor/prosemirror-model/src/comparedeep.ts",
|
|
"third_party/editor/prosemirror-model/src/content.ts",
|
|
"third_party/editor/prosemirror-model/src/diff.ts",
|
|
"third_party/editor/prosemirror-model/src/fragment.ts",
|
|
"third_party/editor/prosemirror-model/src/from_dom.ts",
|
|
"third_party/editor/prosemirror-model/src/index.ts",
|
|
"third_party/editor/prosemirror-model/src/mark.ts",
|
|
"third_party/editor/prosemirror-model/src/node.ts",
|
|
"third_party/editor/prosemirror-model/src/replace.ts",
|
|
"third_party/editor/prosemirror-model/src/resolvedpos.ts",
|
|
"third_party/editor/prosemirror-model/src/schema.ts",
|
|
"third_party/editor/prosemirror-model/src/to_dom.ts",
|
|
"third_party/editor/prosemirror-schema-list/src/schema-list.ts",
|
|
"third_party/editor/prosemirror-state/src/index.ts",
|
|
"third_party/editor/prosemirror-state/src/plugin.ts",
|
|
"third_party/editor/prosemirror-state/src/selection.ts",
|
|
"third_party/editor/prosemirror-state/src/state.ts",
|
|
"third_party/editor/prosemirror-state/src/transaction.ts",
|
|
"third_party/editor/prosemirror-transform/src/attr_step.ts",
|
|
"third_party/editor/prosemirror-transform/src/index.ts",
|
|
"third_party/editor/prosemirror-transform/src/map.ts",
|
|
"third_party/editor/prosemirror-transform/src/mark.ts",
|
|
"third_party/editor/prosemirror-transform/src/mark_step.ts",
|
|
"third_party/editor/prosemirror-transform/src/replace.ts",
|
|
"third_party/editor/prosemirror-transform/src/replace_step.ts",
|
|
"third_party/editor/prosemirror-transform/src/step.ts",
|
|
"third_party/editor/prosemirror-transform/src/structure.ts",
|
|
"third_party/editor/prosemirror-transform/src/transform.ts",
|
|
"third_party/editor/prosemirror-view/src/browser.ts",
|
|
"third_party/editor/prosemirror-view/src/capturekeys.ts",
|
|
"third_party/editor/prosemirror-view/src/clipboard.ts",
|
|
"third_party/editor/prosemirror-view/src/decoration.ts",
|
|
"third_party/editor/prosemirror-view/src/dom.ts",
|
|
"third_party/editor/prosemirror-view/src/domchange.ts",
|
|
"third_party/editor/prosemirror-view/src/domcoords.ts",
|
|
"third_party/editor/prosemirror-view/src/domobserver.ts",
|
|
"third_party/editor/prosemirror-view/src/index.ts",
|
|
"third_party/editor/prosemirror-view/src/input.ts",
|
|
"third_party/editor/prosemirror-view/src/selection.ts",
|
|
"third_party/editor/prosemirror-view/src/viewdesc.ts",
|
|
"third_party/editor/punycode.js/punycode.js",
|
|
"third_party/editor/rope-sequence/index.js",
|
|
"third_party/editor/uc.micro/categories/Cc/regex.mjs",
|
|
"third_party/editor/uc.micro/categories/Cf/regex.mjs",
|
|
"third_party/editor/uc.micro/categories/P/regex.mjs",
|
|
"third_party/editor/uc.micro/categories/S/regex.mjs",
|
|
"third_party/editor/uc.micro/categories/Z/regex.mjs",
|
|
"third_party/editor/uc.micro/index.mjs",
|
|
"third_party/editor/uc.micro/properties/Any/regex.mjs",
|
|
"third_party/editor/w3c-keyname/index.js"
|
|
]
|
|
}
|