Files
stack/packages/webui/editor/BUILD.json
T
jason.woltje 9353675d1c webui: a WYSIWYG Markdown editor in the Console docs view, built from reviewable source (row 154, Q168, #1648)
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 onto d88613bac (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
on 72c3fa598 with 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.
2026-10-18 17:14:39 -05:00

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"
]
}