Q168: WYSIWYG Console editor built from reviewable source #1648

Closed
opened 2026-10-16 18:38:11 +00:00 by jarvis · 13 comments
Contributor

Jason ruling Q168, via Mos. Row 148 ships the textarea and preview as an interim. This row: one more library search against the row 148 bar; if none passes, build an open-source WYSIWYG from source in the repo with a current sanitizer, a pinned origin commit and reviewable code, owned by the repo from then on. Q167 D3 still bans unreviewable prebuilt bundles. Mos gives the decision 123 go on the license and candidate before any code is imported.

Owner: Researcher. Reviewers: Dewey (security), Filbert. Needs row 148 done.

Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md

Jason ruling Q168, via Mos. Row 148 ships the textarea and preview as an interim. This row: one more library search against the row 148 bar; if none passes, build an open-source WYSIWYG from source in the repo with a current sanitizer, a pinned origin commit and reviewable code, owned by the repo from then on. Q167 D3 still bans unreviewable prebuilt bundles. Mos gives the decision 123 go on the license and candidate before any code is imported. Owner: Researcher. Reviewers: Dewey (security), Filbert. Needs row 148 done. Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md
Author
Contributor

Review request for queue row 154, round 1: A WYSIWYG Console editor built from reviewable source (Q168)

  • Owner: researcher
  • Reviewers: dewey, filbert
  • Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage)
  • Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04
  • Candidate: manifest ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb

The manifest:

7d01169bd6e68b2cf2b29a57bc793a19296dc9552b640604a03b77d100b828b1  docs/TOOLS.md
6a6620a82d649957602510ae59b13cd8ec69beb316ae80db60aa5b5403296225  packages/webui/README.md
40c4a7ca6e6e46fed2fbbd7287796333ba99f206dc407abf09383284fdaac23e  packages/webui/editor/BUILD.json
fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd  packages/webui/editor/build.mjs
3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24  packages/webui/editor/editor.css
f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56  packages/webui/editor/entry.mjs
b9c580f6c2a082f8549ccb73fec32b694cf943d383a60e58510ee9e2928f6a82  packages/webui/editor/model.mjs
efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9  packages/webui/editor/toolchain.mjs
737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829  packages/webui/editor/view.mjs
eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f  packages/webui/package-lock.json
0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c  packages/webui/package.json
66f6d9f98e32c05d8c893ab9ef80d7cb61ea3918dd2cabfc38f26be34bccff02  packages/webui/src/public/bus.js
8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f  packages/webui/src/public/editor.css
c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565  packages/webui/src/public/editor.js
a192a614ec1ad9dab9d556f4cd5ad366b902d30101bf8bacb6f874fbe8707416  packages/webui/src/public/index.html
fbd6cbba33572f50f25b597b05c3465241b8cadc3e93b69d39c1d2c527bab06f  packages/webui/src/serve.mjs
e073ca5f1b3767b16d33e8a971646eca295a60034e2924518e882f3cab5b6ea2  packages/webui/tests/browser.test.mjs
993a3028d1fae170546c3da7c5810c94f0e78b200c5cf1e53583c357f7b46493  packages/webui/tests/docs-browser.test.mjs
acc8a958e4c309e16dae500608bf0a8fe981b9451f53aa46f14aa1aa4de57712  packages/webui/tests/editor-browser.test.mjs
f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461  packages/webui/tests/editor-provenance.test.mjs
d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12  packages/webui/tests/editor.test.mjs
d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1  packages/webui/tests/helpers/editor-bundle.mjs
552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b  packages/webui/tests/helpers/every-element.mjs
7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e  packages/webui/tests/serve.test.mjs
2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7  packages/webui/third_party/editor/NOTICE
d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d  packages/webui/third_party/editor/PROVENANCE.json
cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164  packages/webui/third_party/editor/entities/LICENSE
c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c  packages/webui/third_party/editor/entities/package.json
38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94  packages/webui/third_party/editor/entities/src/decode.ts
7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c  packages/webui/third_party/editor/entities/src/decode_codepoint.ts
e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b  packages/webui/third_party/editor/entities/src/encode.ts
c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f  packages/webui/third_party/editor/entities/src/escape.ts
99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4  packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts
701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b  packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts
409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103  packages/webui/third_party/editor/entities/src/generated/encode-html.ts
6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687  packages/webui/third_party/editor/entities/src/index.ts
95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3  packages/webui/third_party/editor/linkify-it/LICENSE
b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1  packages/webui/third_party/editor/linkify-it/index.mjs
ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8  packages/webui/third_party/editor/linkify-it/lib/re.mjs
492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204  packages/webui/third_party/editor/linkify-it/package.json
792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473  packages/webui/third_party/editor/markdown-it/LICENSE
a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b  packages/webui/third_party/editor/markdown-it/index.mjs
5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5  packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs
82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc  packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs
952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe  packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs
c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965  packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs
0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs
70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs
c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs
840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158  packages/webui/third_party/editor/markdown-it/lib/index.mjs
ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4  packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs
d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec  packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs
67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4  packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs
0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee  packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs
f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9  packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs
d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f  packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs
47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2  packages/webui/third_party/editor/markdown-it/lib/renderer.mjs
86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2  packages/webui/third_party/editor/markdown-it/lib/ruler.mjs
d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899  packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs
5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968  packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs
4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21  packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs
75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c  packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs
2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9  packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs
d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b  packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs
ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482  packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs
1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f  packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs
be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a  packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs
8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6  packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs
3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860  packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs
454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca  packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs
52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5  packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs
0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3  packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs
e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499  packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs
7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93  packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs
9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a  packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs
2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee  packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs
eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0  packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs
d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce  packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs
78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5  packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs
8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40  packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs
06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403  packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs
23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1  packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs
37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101  packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs
f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf  packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs
143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c  packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs
f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924  packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs
67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4  packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs
a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0  packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs
3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e  packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs
4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990  packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs
f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372  packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs
cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089  packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs
63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8  packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs
c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f  packages/webui/third_party/editor/markdown-it/lib/token.mjs
4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5  packages/webui/third_party/editor/markdown-it/package.json
6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644  packages/webui/third_party/editor/mdurl/LICENSE
8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0  packages/webui/third_party/editor/mdurl/index.mjs
d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20  packages/webui/third_party/editor/mdurl/lib/decode.mjs
0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d  packages/webui/third_party/editor/mdurl/lib/encode.mjs
2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d  packages/webui/third_party/editor/mdurl/lib/format.mjs
2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d  packages/webui/third_party/editor/mdurl/lib/parse.mjs
807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d  packages/webui/third_party/editor/mdurl/package.json
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/orderedmap/LICENSE
eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641  packages/webui/third_party/editor/orderedmap/index.js
282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c  packages/webui/third_party/editor/orderedmap/package.json
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-commands/LICENSE
4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79  packages/webui/third_party/editor/prosemirror-commands/package.json
41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc  packages/webui/third_party/editor/prosemirror-commands/src/commands.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-history/LICENSE
e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22  packages/webui/third_party/editor/prosemirror-history/package.json
146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c  packages/webui/third_party/editor/prosemirror-history/src/history.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-inputrules/LICENSE
d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9  packages/webui/third_party/editor/prosemirror-inputrules/package.json
fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9  packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts
3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2  packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts
17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed  packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts
444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd  packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-keymap/LICENSE
15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761  packages/webui/third_party/editor/prosemirror-keymap/package.json
9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60  packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-markdown/LICENSE
f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494  packages/webui/third_party/editor/prosemirror-markdown/package.json
8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d  packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts
f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5  packages/webui/third_party/editor/prosemirror-markdown/src/index.ts
f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece  packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts
fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb  packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-model/LICENSE
b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e  packages/webui/third_party/editor/prosemirror-model/package.json
2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174  packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts
a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c  packages/webui/third_party/editor/prosemirror-model/src/content.ts
d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5  packages/webui/third_party/editor/prosemirror-model/src/diff.ts
bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af  packages/webui/third_party/editor/prosemirror-model/src/fragment.ts
b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb  packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts
d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea  packages/webui/third_party/editor/prosemirror-model/src/index.ts
7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057  packages/webui/third_party/editor/prosemirror-model/src/mark.ts
39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2  packages/webui/third_party/editor/prosemirror-model/src/node.ts
4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c  packages/webui/third_party/editor/prosemirror-model/src/replace.ts
dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596  packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts
ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a  packages/webui/third_party/editor/prosemirror-model/src/schema.ts
b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f  packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-schema-list/LICENSE
98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964  packages/webui/third_party/editor/prosemirror-schema-list/package.json
fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54  packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-state/LICENSE
b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef  packages/webui/third_party/editor/prosemirror-state/package.json
eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a  packages/webui/third_party/editor/prosemirror-state/src/index.ts
a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202  packages/webui/third_party/editor/prosemirror-state/src/plugin.ts
cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a  packages/webui/third_party/editor/prosemirror-state/src/selection.ts
081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44  packages/webui/third_party/editor/prosemirror-state/src/state.ts
fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83  packages/webui/third_party/editor/prosemirror-state/src/transaction.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-transform/LICENSE
2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb  packages/webui/third_party/editor/prosemirror-transform/package.json
02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d  packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts
340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed  packages/webui/third_party/editor/prosemirror-transform/src/index.ts
ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78  packages/webui/third_party/editor/prosemirror-transform/src/map.ts
f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb  packages/webui/third_party/editor/prosemirror-transform/src/mark.ts
0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4  packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts
07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1  packages/webui/third_party/editor/prosemirror-transform/src/replace.ts
478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9  packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts
1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac  packages/webui/third_party/editor/prosemirror-transform/src/step.ts
0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3  packages/webui/third_party/editor/prosemirror-transform/src/structure.ts
ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3  packages/webui/third_party/editor/prosemirror-transform/src/transform.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-view/LICENSE
79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a  packages/webui/third_party/editor/prosemirror-view/package.json
753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af  packages/webui/third_party/editor/prosemirror-view/src/browser.ts
e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705  packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts
4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9  packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts
a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a  packages/webui/third_party/editor/prosemirror-view/src/decoration.ts
045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af  packages/webui/third_party/editor/prosemirror-view/src/dom.ts
6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a  packages/webui/third_party/editor/prosemirror-view/src/domchange.ts
d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418  packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts
ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb  packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts
14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200  packages/webui/third_party/editor/prosemirror-view/src/index.ts
58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4  packages/webui/third_party/editor/prosemirror-view/src/input.ts
6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437  packages/webui/third_party/editor/prosemirror-view/src/selection.ts
3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f  packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts
1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57  packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt
e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb  packages/webui/third_party/editor/punycode.js/package.json
6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04  packages/webui/third_party/editor/punycode.js/punycode.js
530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226  packages/webui/third_party/editor/rope-sequence/LICENSE
efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624  packages/webui/third_party/editor/rope-sequence/index.js
0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548  packages/webui/third_party/editor/rope-sequence/package.json
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/uc.micro/LICENSE.txt
d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8  packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs
0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5  packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs
378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f  packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs
53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e  packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs
32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325  packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs
4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087  packages/webui/third_party/editor/uc.micro/index.mjs
8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250  packages/webui/third_party/editor/uc.micro/package.json
41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc  packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/w3c-keyname/LICENSE
b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e  packages/webui/third_party/editor/w3c-keyname/index.js
0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b  packages/webui/third_party/editor/w3c-keyname/package.json

Check a tree against it with scripts/mosaic queue review verify-commit 154 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb --op OP --by SEAT
<!-- mosaic-queue-op: sage-r154-req-1 --> <!-- mosaic-queue-round: row=154 round=1 candidate=ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb --> Review request for queue row 154, round 1: A WYSIWYG Console editor built from reviewable source (Q168) - Owner: researcher - Reviewers: dewey, filbert - Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage) - Brief: `docs/plans/2026-10-16_q168-wysiwyg-editor.md` § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04 - Candidate: manifest `ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb` The manifest: ```text 7d01169bd6e68b2cf2b29a57bc793a19296dc9552b640604a03b77d100b828b1 docs/TOOLS.md 6a6620a82d649957602510ae59b13cd8ec69beb316ae80db60aa5b5403296225 packages/webui/README.md 40c4a7ca6e6e46fed2fbbd7287796333ba99f206dc407abf09383284fdaac23e packages/webui/editor/BUILD.json fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd packages/webui/editor/build.mjs 3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24 packages/webui/editor/editor.css f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56 packages/webui/editor/entry.mjs b9c580f6c2a082f8549ccb73fec32b694cf943d383a60e58510ee9e2928f6a82 packages/webui/editor/model.mjs efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9 packages/webui/editor/toolchain.mjs 737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829 packages/webui/editor/view.mjs eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f packages/webui/package-lock.json 0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c packages/webui/package.json 66f6d9f98e32c05d8c893ab9ef80d7cb61ea3918dd2cabfc38f26be34bccff02 packages/webui/src/public/bus.js 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f packages/webui/src/public/editor.css c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565 packages/webui/src/public/editor.js a192a614ec1ad9dab9d556f4cd5ad366b902d30101bf8bacb6f874fbe8707416 packages/webui/src/public/index.html fbd6cbba33572f50f25b597b05c3465241b8cadc3e93b69d39c1d2c527bab06f packages/webui/src/serve.mjs e073ca5f1b3767b16d33e8a971646eca295a60034e2924518e882f3cab5b6ea2 packages/webui/tests/browser.test.mjs 993a3028d1fae170546c3da7c5810c94f0e78b200c5cf1e53583c357f7b46493 packages/webui/tests/docs-browser.test.mjs acc8a958e4c309e16dae500608bf0a8fe981b9451f53aa46f14aa1aa4de57712 packages/webui/tests/editor-browser.test.mjs f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461 packages/webui/tests/editor-provenance.test.mjs d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12 packages/webui/tests/editor.test.mjs d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1 packages/webui/tests/helpers/editor-bundle.mjs 552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b packages/webui/tests/helpers/every-element.mjs 7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e packages/webui/tests/serve.test.mjs 2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7 packages/webui/third_party/editor/NOTICE d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d packages/webui/third_party/editor/PROVENANCE.json cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 packages/webui/third_party/editor/entities/LICENSE c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c packages/webui/third_party/editor/entities/package.json 38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94 packages/webui/third_party/editor/entities/src/decode.ts 7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c packages/webui/third_party/editor/entities/src/decode_codepoint.ts e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b packages/webui/third_party/editor/entities/src/encode.ts c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f packages/webui/third_party/editor/entities/src/escape.ts 99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4 packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts 701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts 409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103 packages/webui/third_party/editor/entities/src/generated/encode-html.ts 6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687 packages/webui/third_party/editor/entities/src/index.ts 95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3 packages/webui/third_party/editor/linkify-it/LICENSE b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1 packages/webui/third_party/editor/linkify-it/index.mjs ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8 packages/webui/third_party/editor/linkify-it/lib/re.mjs 492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204 packages/webui/third_party/editor/linkify-it/package.json 792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473 packages/webui/third_party/editor/markdown-it/LICENSE a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b packages/webui/third_party/editor/markdown-it/index.mjs 5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5 packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs 82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs 952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965 packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs 0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs 70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs 840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158 packages/webui/third_party/editor/markdown-it/lib/index.mjs ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4 packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs 67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4 packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs 0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9 packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs 47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2 packages/webui/third_party/editor/markdown-it/lib/renderer.mjs 86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2 packages/webui/third_party/editor/markdown-it/lib/ruler.mjs d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899 packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs 5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968 packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs 4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21 packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs 75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs 2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9 packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482 packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs 1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs 8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6 packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs 3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860 packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs 454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs 52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5 packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs 0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3 packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499 packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs 7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93 packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs 9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs 2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0 packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs 78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5 packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs 8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40 packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs 06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403 packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs 23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1 packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs 37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101 packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs 143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924 packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs 67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4 packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0 packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs 3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs 4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990 packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372 packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089 packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs 63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8 packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f packages/webui/third_party/editor/markdown-it/lib/token.mjs 4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5 packages/webui/third_party/editor/markdown-it/package.json 6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644 packages/webui/third_party/editor/mdurl/LICENSE 8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0 packages/webui/third_party/editor/mdurl/index.mjs d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20 packages/webui/third_party/editor/mdurl/lib/decode.mjs 0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d packages/webui/third_party/editor/mdurl/lib/encode.mjs 2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d packages/webui/third_party/editor/mdurl/lib/format.mjs 2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d packages/webui/third_party/editor/mdurl/lib/parse.mjs 807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d packages/webui/third_party/editor/mdurl/package.json 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/orderedmap/LICENSE eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641 packages/webui/third_party/editor/orderedmap/index.js 282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c packages/webui/third_party/editor/orderedmap/package.json ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-commands/LICENSE 4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79 packages/webui/third_party/editor/prosemirror-commands/package.json 41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc packages/webui/third_party/editor/prosemirror-commands/src/commands.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-history/LICENSE e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22 packages/webui/third_party/editor/prosemirror-history/package.json 146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c packages/webui/third_party/editor/prosemirror-history/src/history.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-inputrules/LICENSE d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9 packages/webui/third_party/editor/prosemirror-inputrules/package.json fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9 packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts 3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2 packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts 17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts 444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-keymap/LICENSE 15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761 packages/webui/third_party/editor/prosemirror-keymap/package.json 9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60 packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-markdown/LICENSE f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494 packages/webui/third_party/editor/prosemirror-markdown/package.json 8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5 packages/webui/third_party/editor/prosemirror-markdown/src/index.ts f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-model/LICENSE b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e packages/webui/third_party/editor/prosemirror-model/package.json 2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174 packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c packages/webui/third_party/editor/prosemirror-model/src/content.ts d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5 packages/webui/third_party/editor/prosemirror-model/src/diff.ts bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af packages/webui/third_party/editor/prosemirror-model/src/fragment.ts b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea packages/webui/third_party/editor/prosemirror-model/src/index.ts 7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057 packages/webui/third_party/editor/prosemirror-model/src/mark.ts 39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2 packages/webui/third_party/editor/prosemirror-model/src/node.ts 4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c packages/webui/third_party/editor/prosemirror-model/src/replace.ts dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596 packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a packages/webui/third_party/editor/prosemirror-model/src/schema.ts b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-schema-list/LICENSE 98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964 packages/webui/third_party/editor/prosemirror-schema-list/package.json fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54 packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-state/LICENSE b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef packages/webui/third_party/editor/prosemirror-state/package.json eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a packages/webui/third_party/editor/prosemirror-state/src/index.ts a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202 packages/webui/third_party/editor/prosemirror-state/src/plugin.ts cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a packages/webui/third_party/editor/prosemirror-state/src/selection.ts 081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44 packages/webui/third_party/editor/prosemirror-state/src/state.ts fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83 packages/webui/third_party/editor/prosemirror-state/src/transaction.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-transform/LICENSE 2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb packages/webui/third_party/editor/prosemirror-transform/package.json 02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts 340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed packages/webui/third_party/editor/prosemirror-transform/src/index.ts ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78 packages/webui/third_party/editor/prosemirror-transform/src/map.ts f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb packages/webui/third_party/editor/prosemirror-transform/src/mark.ts 0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4 packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts 07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1 packages/webui/third_party/editor/prosemirror-transform/src/replace.ts 478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9 packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts 1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac packages/webui/third_party/editor/prosemirror-transform/src/step.ts 0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3 packages/webui/third_party/editor/prosemirror-transform/src/structure.ts ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3 packages/webui/third_party/editor/prosemirror-transform/src/transform.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-view/LICENSE 79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a packages/webui/third_party/editor/prosemirror-view/package.json 753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af packages/webui/third_party/editor/prosemirror-view/src/browser.ts e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705 packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts 4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9 packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a packages/webui/third_party/editor/prosemirror-view/src/decoration.ts 045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af packages/webui/third_party/editor/prosemirror-view/src/dom.ts 6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a packages/webui/third_party/editor/prosemirror-view/src/domchange.ts d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418 packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts 14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200 packages/webui/third_party/editor/prosemirror-view/src/index.ts 58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4 packages/webui/third_party/editor/prosemirror-view/src/input.ts 6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437 packages/webui/third_party/editor/prosemirror-view/src/selection.ts 3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts 1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57 packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb packages/webui/third_party/editor/punycode.js/package.json 6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04 packages/webui/third_party/editor/punycode.js/punycode.js 530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226 packages/webui/third_party/editor/rope-sequence/LICENSE efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624 packages/webui/third_party/editor/rope-sequence/index.js 0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548 packages/webui/third_party/editor/rope-sequence/package.json 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/uc.micro/LICENSE.txt d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8 packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs 0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5 packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs 378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs 53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs 32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325 packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs 4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087 packages/webui/third_party/editor/uc.micro/index.mjs 8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250 packages/webui/third_party/editor/uc.micro/package.json 41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/w3c-keyname/LICENSE b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e packages/webui/third_party/editor/w3c-keyname/index.js 0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b packages/webui/third_party/editor/w3c-keyname/package.json ``` Check a tree against it with `scripts/mosaic queue review verify-commit 154 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb --op OP --by SEAT ```
Member

Filbert review, row 154 round 1: changes

Candidate manifest ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb (195 paths), base 0f715a054. I reviewed and ran on 0f715a054 plus Researcher's candidate.patch. All 195 hashes match before and after every run. The packages/webui/src/public/ diff and the imported source still need Mos's decision 123 go on the candidate.

One change is requested, a single test. Everything else checks out, including the byte-for-byte rebuild.

1. Byte-for-byte rebuild: confirmed

In packages/webui, I ran:

  1. npm ci --ignore-scripts --no-audit --no-fund from the package-local lock. The lock sha256 is eb60a494...f63f. It installed esbuild 0.28.2, and the linux-x64 binary sha256 is e1698a3d...4100, as editor/toolchain.mjs pins.
  2. MOSAIC_REQUIRE_EDITOR_BUILD=1 node editor/toolchain.mjs, which exited 0.
  3. node editor/build.mjs --out into my scratch. editor.js is c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565, 757137 B; editor.css is 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f. cmp shows editor.js, editor.css and BUILD.json identical to the shipped files.
  4. The literal node editor/build.mjs in place. All 195 manifest hashes were unchanged afterwards.

Because the build ran from my own path, this also confirms the README's claim that builds from different absolute paths give identical bytes. esbuild printed one [ignored-bare-import] warning for import "./mark" in prosemirror-transform/src/index.ts. BUILD.md:198 discloses it, and it is harmless: mark.ts only exports functions, and transform.ts imports them directly. editor-provenance.test.mjs:159 ran rather than skipped under MOSAIC_REQUIRE_EDITOR_BUILD=1 (6/6, 0 skipped).

2. Round-trip and save tests

  • editor.test.mjs:32 round-trips the goals review and EVERY exactly. :40 asserts that every .md under docs/ and spec/ round-trips, with CRLF normalised to LF as row 148 saves.
  • editor-browser.test.mjs:323 types into one paragraph and asserts the whole saved content string. Only that block is rewritten, with the typed ** escaped; the table, heading and last paragraph come back byte for byte. The body keys are row 148's {base, content, path, project}, and the second save is based on the first save's commit.
  • :246 checks that pasted image spans survive into a save only for targets the gate accepts. :154 checks that pasted links and the link bar refuse javascript:, data:, vbscript:, protocol-relative and bad-host targets.
  • Row 148's save tests in docs-browser.test.mjs pass (1/1). Their assertions are unchanged. The open helper and three waits now go through a new source() helper that clicks Source first, which the README discloses.

3. The mode switch reuseDraft fix: correct and pinned

docView(get, project, file, { reuseDraft = false } = {}) rereads only when !s || (!dirty(s) && !reuseDraft) (bus.js:690). The mode click passes { reuseDraft: true } explicitly through render, view and docView (bus.js:744); it is not a module flag that later navigation could inherit. editor-browser.test.mjs:283 counts the reads:

  • two Visual/Source round trips read nothing;
  • Reload reads once;
  • a switch after Reload reads nothing;
  • going away and back reads once.

My m1 (drop && !reuseDraft) and m2 (click without { reuseDraft: true }) are both killed by :283 and :323.

4. The browser.test.mjs script-list pin

browser.test.mjs:22 deep-equals the page's script src list against ['/editor.js', '/brand.js', '/app.js', '/markdown-preview.js', '/bus.js'], which is order and count, not a bare count. My m4 (moving editor.js after brand.js in index.html) is killed by it. serve.mjs changes only by the two static entries (serve.mjs:26-27), and serve.test.mjs:36 serves both.

Row 129 overlap

BUILD.md's "Row 129 overlap" section matches what I expect: browser.test.mjs:22, index.html and the serve.test.mjs path list conflict textually, not semantically. Row 129 landed first, so the r2 rebase must pin all six scripts in page order and keep row 129's named /chat.js check. I'll review that delta when it comes.

Change requested

Test the Source fallback when the round trip fails. The visual editor opens only if window.MosaicEditor.roundTrip(s.text) === s.text (bus.js:703). Otherwise the file opens in Source with the note "The visual editor is not available for this file, so it is open as source." (bus.js:704). This gate is what keeps brief item 5 ("A file opened and saved with no edits saves the same bytes") true for a file nobody has tried yet. The README states the behaviour at README.md:515.

My m3 replaced the gate with visualOk = true; and survived editor-browser.test.mjs. No test opens a file that fails the round trip, because every repository doc passes it. A browser test can still reach the gate: replace window.MosaicEditor before the page opens the file, with a roundTrip that returns different text and the real mount. Then assert that #doc-text is shown, that the note is present, that no .ProseMirror exists, and that Save stays off with no edit. Covering the !window.MosaicEditor branch (editor.js failed to load) in the same test would be cheap.

Non-blocking notes

  • bus.js:743: when a file falls back to Source, docMode stays 'visual'. Clicking Visual then returns early (mode === docMode), so the button does nothing; Source still works. The behaviour is harmless, but the aria-pressed Visual button is a dead control here. The new test could pin whichever behaviour you choose.
  • docs-browser.test.mjs: the third replaced wait dropped #doc-commit textContent !== ""; source() waits only for #doc-commit to exist. The #doc-commit text assertion follows right after it, so a slow render could fail that test intermittently. It is not a weakened assertion.

Ran by me

Slot from sage-0792. The busy check was CLEAR before each step, the manifest was checked before and after, TMPDIR was in my own scratch, and DOCKER_HOST was a dead socket.

  • Rebuild: 17:16:38Z to 17:16:39Z, as in section 1.
  • Singles, 17:16:49Z to 17:17:09Z, with MOSAIC_REQUIRE_EDITOR_BUILD=1: editor 5/5, editor-provenance 6/6, editor-browser 5/5, docs-browser 1/1, browser 1/1, serve 4/4, project-file 10/10, markdown-preview 19/19. The awk sum is 51/51, 0 skipped.
  • Mutants, 17:17:14Z to 17:17:42Z. The controls for editor-browser and browser passed first. m1, m2 and m4 were killed as described above. m3 (the round-trip gate) survived.

Not mine

Researcher's slot run (BUILD.md "Results"), 16:48:49Z to 16:51:57Z: webui 162/162 with MOSAIC_REQUIRE_EDITOR_BUILD=1, and Researcher's own rebuild check at 16:52Z.

## Filbert review, row 154 round 1: changes Candidate manifest `ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb` (195 paths), base `0f715a054`. I reviewed and ran on `0f715a054` plus Researcher's `candidate.patch`. All 195 hashes match before and after every run. The `packages/webui/src/public/` diff and the imported source still need Mos's decision 123 go on the candidate. One change is requested, a single test. Everything else checks out, including the byte-for-byte rebuild. ### 1. Byte-for-byte rebuild: confirmed In `packages/webui`, I ran: 1. `npm ci --ignore-scripts --no-audit --no-fund` from the package-local lock. The lock sha256 is `eb60a494...f63f`. It installed esbuild `0.28.2`, and the linux-x64 binary sha256 is `e1698a3d...4100`, as `editor/toolchain.mjs` pins. 2. `MOSAIC_REQUIRE_EDITOR_BUILD=1 node editor/toolchain.mjs`, which exited 0. 3. `node editor/build.mjs --out` into my scratch. `editor.js` is `c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565`, 757137 B; `editor.css` is `8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f`. `cmp` shows `editor.js`, `editor.css` and `BUILD.json` identical to the shipped files. 4. The literal `node editor/build.mjs` in place. All 195 manifest hashes were unchanged afterwards. Because the build ran from my own path, this also confirms the README's claim that builds from different absolute paths give identical bytes. esbuild printed one `[ignored-bare-import]` warning for `import "./mark"` in `prosemirror-transform/src/index.ts`. BUILD.md:198 discloses it, and it is harmless: `mark.ts` only exports functions, and `transform.ts` imports them directly. `editor-provenance.test.mjs:159` ran rather than skipped under `MOSAIC_REQUIRE_EDITOR_BUILD=1` (6/6, 0 skipped). ### 2. Round-trip and save tests - `editor.test.mjs:32` round-trips the goals review and `EVERY` exactly. `:40` asserts that every `.md` under `docs/` and `spec/` round-trips, with CRLF normalised to LF as row 148 saves. - `editor-browser.test.mjs:323` types into one paragraph and asserts the whole saved `content` string. Only that block is rewritten, with the typed `**` escaped; the table, heading and last paragraph come back byte for byte. The body keys are row 148's `{base, content, path, project}`, and the second save is based on the first save's commit. - `:246` checks that pasted image spans survive into a save only for targets the gate accepts. `:154` checks that pasted links and the link bar refuse `javascript:`, `data:`, `vbscript:`, protocol-relative and bad-host targets. - Row 148's save tests in `docs-browser.test.mjs` pass (1/1). Their assertions are unchanged. The `open` helper and three waits now go through a new `source()` helper that clicks Source first, which the README discloses. ### 3. The mode switch `reuseDraft` fix: correct and pinned `docView(get, project, file, { reuseDraft = false } = {})` rereads only when `!s || (!dirty(s) && !reuseDraft)` (`bus.js:690`). The mode click passes `{ reuseDraft: true }` explicitly through `render`, `view` and `docView` (`bus.js:744`); it is not a module flag that later navigation could inherit. `editor-browser.test.mjs:283` counts the reads: - two Visual/Source round trips read nothing; - Reload reads once; - a switch after Reload reads nothing; - going away and back reads once. My m1 (drop `&& !reuseDraft`) and m2 (click without `{ reuseDraft: true }`) are both killed by `:283` and `:323`. ### 4. The `browser.test.mjs` script-list pin `browser.test.mjs:22` deep-equals the page's script `src` list against `['/editor.js', '/brand.js', '/app.js', '/markdown-preview.js', '/bus.js']`, which is order and count, not a bare count. My m4 (moving `editor.js` after `brand.js` in `index.html`) is killed by it. `serve.mjs` changes only by the two static entries (`serve.mjs:26-27`), and `serve.test.mjs:36` serves both. ### Row 129 overlap BUILD.md's "Row 129 overlap" section matches what I expect: `browser.test.mjs:22`, `index.html` and the `serve.test.mjs` path list conflict textually, not semantically. Row 129 landed first, so the r2 rebase must pin all six scripts in page order and keep row 129's named `/chat.js` check. I'll review that delta when it comes. ### Change requested **Test the Source fallback when the round trip fails.** The visual editor opens only if `window.MosaicEditor.roundTrip(s.text) === s.text` (`bus.js:703`). Otherwise the file opens in Source with the note "The visual editor is not available for this file, so it is open as source." (`bus.js:704`). This gate is what keeps brief item 5 ("A file opened and saved with no edits saves the same bytes") true for a file nobody has tried yet. The README states the behaviour at `README.md:515`. My m3 replaced the gate with `visualOk = true;` and survived `editor-browser.test.mjs`. No test opens a file that fails the round trip, because every repository doc passes it. A browser test can still reach the gate: replace `window.MosaicEditor` before the page opens the file, with a `roundTrip` that returns different text and the real `mount`. Then assert that `#doc-text` is shown, that the note is present, that no `.ProseMirror` exists, and that Save stays off with no edit. Covering the `!window.MosaicEditor` branch (editor.js failed to load) in the same test would be cheap. ### Non-blocking notes - `bus.js:743`: when a file falls back to Source, `docMode` stays `'visual'`. Clicking Visual then returns early (`mode === docMode`), so the button does nothing; Source still works. The behaviour is harmless, but the `aria-pressed` Visual button is a dead control here. The new test could pin whichever behaviour you choose. - `docs-browser.test.mjs`: the third replaced wait dropped `#doc-commit textContent !== ""`; `source()` waits only for `#doc-commit` to exist. The `#doc-commit` text assertion follows right after it, so a slow render could fail that test intermittently. It is not a weakened assertion. ### Ran by me Slot from sage-0792. The busy check was CLEAR before each step, the manifest was checked before and after, TMPDIR was in my own scratch, and DOCKER_HOST was a dead socket. - Rebuild: 17:16:38Z to 17:16:39Z, as in section 1. - Singles, 17:16:49Z to 17:17:09Z, with `MOSAIC_REQUIRE_EDITOR_BUILD=1`: editor 5/5, editor-provenance 6/6, editor-browser 5/5, docs-browser 1/1, browser 1/1, serve 4/4, project-file 10/10, markdown-preview 19/19. The awk sum is 51/51, 0 skipped. - Mutants, 17:17:14Z to 17:17:42Z. The controls for editor-browser and browser passed first. m1, m2 and m4 were killed as described above. m3 (the round-trip gate) survived. ### Not mine Researcher's slot run (BUILD.md "Results"), 16:48:49Z to 16:51:57Z: webui 162/162 with `MOSAIC_REQUIRE_EDITOR_BUILD=1`, and Researcher's own rebuild check at 16:52Z.
Member

Dewey security review, row 154 round 1: changes requested. Candidate manifest digest ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb. Packet patch 7ebc125f…0ca1 on base 0f715a054.

I applied the patch to a detached worktree of 0f715a054, and all 195 manifest paths match. I ran npm ci --ignore-scripts in packages/webui, which installed 2 packages (esbuild and @esbuild/linux-x64); the lock sha is eb60a494…f63f. Everything ran in my scratch, nothing under the live tree. I didn't repeat Filbert's m3 mutant.

Mos's conditions: all confirmed

Check Result
node editor/toolchain.mjs rc 0: esbuild 0.28.2, binary sha256 e1698a3d5c6c0798fee4fd3b5cc816651f460c63d390a7a26ea4beb0b1884100
node editor/build.mjs --out <scratch> editor.js matches the tree byte for byte: c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565, 757137 bytes. editor.css matches too: 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f, 4462 bytes. The BUILD.json inputs (133) and outputs equal the committed file.
editor-provenance.test.mjs, MOSAIC_REQUIRE_EDITOR_BUILD=1 6/6
esbuild missing (node_modules moved away) With the switch, the rebuild test fails (5 pass, 1 fail) and toolchain exits 3. Without it, the test skips with the npm ci hint (5 pass, 1 skipped).
Binary altered (one byte appended) toolchain exits 4 and names both shas. Without the switch the rebuild test still fails.
One vendored byte changed (prosemirror-model/src/index.ts) The tree-hash test "the imported source is the tagged upstream source plus the recorded local changes, and nothing else" fails.
After the restore Manifest OK, binary sha back to e1698a3d…

esbuild warns that import "./mark" in prosemirror-transform/src/index.ts is ignored because the package says sideEffects: false. That's harmless: transform.ts and structure.ts import named exports from ./mark, so the module is still bundled.

I accept the 19 packages and the tighter paste rule. The CSP at serve.mjs:278 is unchanged: script-src 'self', object-src 'none', base-uri 'none', frame-ancestors 'none'. view.mjs builds everything with DOM calls and has no string-to-markup sink. The block tokenizer runs with html: false. linkTarget fails closed when the Console's gate is missing.

Finding (medium): serialise() writes paste-set attributes verbatim, so a saved file can carry raw HTML

Four attribute values that a paste can set reach the Markdown unchanged:

  • the link title (a[href]'s getAttrs, model.mjs:104; written with only " escaped);
  • the image data-alt and data-title (model.mjs:74-75; alt goes through the base esc, which leaves a blank line and < alone, model.mjs:172);
  • the code_block data-params (model.mjs:44; written after the fence).

None of them is checked for a newline. I built a probe with the pinned esbuild and serialise()'s own code. For each of the four, it serialised a value holding \n\n<img src=x onerror=alert(1)>\n\n, then rendered the result with markdown-it in commonmark mode with html: true, as a generic renderer would:

  • In all four cases the saved Markdown holds a top-level HTML block, and the render contains a live <img src=x onerror=alert(1)>.
  • The editor's own re-read turns each into paragraph, raw_block, paragraph, or code_block, raw_block, code_block for params.
  • For params, the \n closes the fence early and starts content of its own.

This breaks the claim at model.mjs:160-161 that "a rewritten block never turns typed text into markup". It also hides content: before the save the user sees only the link text, the image's [image: alt] text or the code block. The markup only shows up after the save, in a file that Gitea or another renderer may display with HTML on. The Console itself renders with html: false, so it isn't exploitable there.

Markdown read from a file can't produce these values, because markdown-it titles and info strings never contain a blank line. Only a paste or a drop can (pasted HTML goes through the parseDOM rules, view.mjs:198). That paste step comes from reading the code. I didn't run a browser paste. The serialise half is verified by the probe.

Suggested fix, in the serialiser (so every source of attributes is covered):

  • replace each run of whitespace containing a newline in a link title, image title or alt with one space;
  • cut code_block params at the first whitespace, and drop or refuse a backtick (CommonMark forbids one in a backtick fence's info string).

Add one test per attribute that serialises the payload above and asserts that no HTML block results, or that the re-read keeps the node types.

Nothing else blocks from my side. The rebase onto 850484a7d (row 129) for round 2 doesn't change these findings.

**Dewey security review, row 154 round 1: changes requested.** Candidate manifest digest `ecaec3293be94ed968588eeb3332b6b7e23289dedbf935d06106a494495f04cb`. Packet patch 7ebc125f…0ca1 on base 0f715a054. I applied the patch to a detached worktree of 0f715a054, and all 195 manifest paths match. I ran `npm ci --ignore-scripts` in packages/webui, which installed 2 packages (esbuild and @esbuild/linux-x64); the lock sha is eb60a494…f63f. Everything ran in my scratch, nothing under the live tree. I didn't repeat Filbert's m3 mutant. ### Mos's conditions: all confirmed | Check | Result | |---|---| | `node editor/toolchain.mjs` | rc 0: esbuild 0.28.2, binary sha256 e1698a3d5c6c0798fee4fd3b5cc816651f460c63d390a7a26ea4beb0b1884100 | | `node editor/build.mjs --out <scratch>` | editor.js matches the tree byte for byte: c601f6c3f75b7cf9898a9a52abfdab3e50badbcb5f66e57e6df57641878e6565, 757137 bytes. editor.css matches too: 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f, 4462 bytes. The BUILD.json inputs (133) and outputs equal the committed file. | | editor-provenance.test.mjs, `MOSAIC_REQUIRE_EDITOR_BUILD=1` | 6/6 | | esbuild missing (node_modules moved away) | With the switch, the rebuild test fails (5 pass, 1 fail) and toolchain exits 3. Without it, the test skips with the npm ci hint (5 pass, 1 skipped). | | Binary altered (one byte appended) | toolchain exits 4 and names both shas. Without the switch the rebuild test still fails. | | One vendored byte changed (prosemirror-model/src/index.ts) | The tree-hash test "the imported source is the tagged upstream source plus the recorded local changes, and nothing else" fails. | | After the restore | Manifest OK, binary sha back to e1698a3d… | esbuild warns that `import "./mark"` in prosemirror-transform/src/index.ts is ignored because the package says `sideEffects: false`. That's harmless: transform.ts and structure.ts import named exports from ./mark, so the module is still bundled. I accept the 19 packages and the tighter paste rule. The CSP at serve.mjs:278 is unchanged: `script-src 'self'`, `object-src 'none'`, `base-uri 'none'`, `frame-ancestors 'none'`. view.mjs builds everything with DOM calls and has no string-to-markup sink. The block tokenizer runs with `html: false`. `linkTarget` fails closed when the Console's gate is missing. ### Finding (medium): serialise() writes paste-set attributes verbatim, so a saved file can carry raw HTML Four attribute values that a paste can set reach the Markdown unchanged: - the link title (`a[href]`'s getAttrs, model.mjs:104; written with only `"` escaped); - the image `data-alt` and `data-title` (model.mjs:74-75; alt goes through the base `esc`, which leaves a blank line and `<` alone, model.mjs:172); - the code_block `data-params` (model.mjs:44; written after the fence). None of them is checked for a newline. I built a probe with the pinned esbuild and serialise()'s own code. For each of the four, it serialised a value holding `\n\n<img src=x onerror=alert(1)>\n\n`, then rendered the result with markdown-it in `commonmark` mode with `html: true`, as a generic renderer would: - In all four cases the saved Markdown holds a top-level HTML block, and the render contains a live `<img src=x onerror=alert(1)>`. - The editor's own re-read turns each into `paragraph, raw_block, paragraph`, or `code_block, raw_block, code_block` for params. - For params, the `\n` closes the fence early and starts content of its own. This breaks the claim at model.mjs:160-161 that "a rewritten block never turns typed text into markup". It also hides content: before the save the user sees only the link text, the image's `[image: alt]` text or the code block. The markup only shows up after the save, in a file that Gitea or another renderer may display with HTML on. The Console itself renders with `html: false`, so it isn't exploitable there. Markdown read from a file can't produce these values, because markdown-it titles and info strings never contain a blank line. Only a paste or a drop can (pasted HTML goes through the parseDOM rules, view.mjs:198). That paste step comes from reading the code. I didn't run a browser paste. The serialise half is verified by the probe. **Suggested fix, in the serialiser** (so every source of attributes is covered): - replace each run of whitespace containing a newline in a link title, image title or alt with one space; - cut code_block params at the first whitespace, and drop or refuse a backtick (CommonMark forbids one in a backtick fence's info string). Add one test per attribute that serialises the payload above and asserts that no HTML block results, or that the re-read keeps the node types. Nothing else blocks from my side. The rebase onto 850484a7d (row 129) for round 2 doesn't change these findings.
Author
Contributor

Review request for queue row 154, round 2: A WYSIWYG Console editor built from reviewable source (Q168)

  • Owner: researcher
  • Reviewers: dewey, filbert
  • Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage)
  • Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04
  • Candidate: manifest 1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017

The manifest:

a71403bc53edf67feeb5e96f033fcb8bc80f82bd89fef86c05a015c21f42e61c  docs/TOOLS.md
afcdb69ced938d04be2a2de760f3d525fb7875786cf3bd6dc55e6624d88d6699  packages/webui/README.md
317e8d78cf178d30d8588fe04e43ae3b2b4b61e1902420a19d83d87a5bf72985  packages/webui/editor/BUILD.json
fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd  packages/webui/editor/build.mjs
3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24  packages/webui/editor/editor.css
f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56  packages/webui/editor/entry.mjs
d3457aad19c6091306727d2b68cc22fb8427452269f4eda7e4e21fcb51672eda  packages/webui/editor/model.mjs
efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9  packages/webui/editor/toolchain.mjs
737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829  packages/webui/editor/view.mjs
eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f  packages/webui/package-lock.json
0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c  packages/webui/package.json
e6dcef4441140e733929a37eceee87db1f244a0ffc0e224f353ae4c45a3b487f  packages/webui/src/public/bus.js
8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f  packages/webui/src/public/editor.css
32fcaa18eaee2ff426c3c7e06038ee190f9fd7a332c9f3db349aa74df22c9fb5  packages/webui/src/public/editor.js
c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c  packages/webui/src/public/index.html
d2d0b094fa435bbb8ed2ea6c81ed2d08d7f2466cbfb8fd54108623b6ad38b9b7  packages/webui/src/serve.mjs
de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f  packages/webui/tests/browser.test.mjs
28f40ccf1c8173915221f4762df5ffa76e888279c880fd22abd80bc02e62dd32  packages/webui/tests/docs-browser.test.mjs
5b050de81b5c36773d41b956811c93a3cc5a368c449dd581b9448ee77638841a  packages/webui/tests/editor-browser.test.mjs
f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461  packages/webui/tests/editor-provenance.test.mjs
d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12  packages/webui/tests/editor.test.mjs
d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1  packages/webui/tests/helpers/editor-bundle.mjs
552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b  packages/webui/tests/helpers/every-element.mjs
7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e  packages/webui/tests/serve.test.mjs
2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7  packages/webui/third_party/editor/NOTICE
d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d  packages/webui/third_party/editor/PROVENANCE.json
cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164  packages/webui/third_party/editor/entities/LICENSE
c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c  packages/webui/third_party/editor/entities/package.json
38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94  packages/webui/third_party/editor/entities/src/decode.ts
7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c  packages/webui/third_party/editor/entities/src/decode_codepoint.ts
e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b  packages/webui/third_party/editor/entities/src/encode.ts
c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f  packages/webui/third_party/editor/entities/src/escape.ts
99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4  packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts
701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b  packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts
409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103  packages/webui/third_party/editor/entities/src/generated/encode-html.ts
6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687  packages/webui/third_party/editor/entities/src/index.ts
95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3  packages/webui/third_party/editor/linkify-it/LICENSE
b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1  packages/webui/third_party/editor/linkify-it/index.mjs
ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8  packages/webui/third_party/editor/linkify-it/lib/re.mjs
492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204  packages/webui/third_party/editor/linkify-it/package.json
792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473  packages/webui/third_party/editor/markdown-it/LICENSE
a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b  packages/webui/third_party/editor/markdown-it/index.mjs
5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5  packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs
82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc  packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs
952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe  packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs
c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965  packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs
0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs
70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs
c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs
840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158  packages/webui/third_party/editor/markdown-it/lib/index.mjs
ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4  packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs
d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec  packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs
67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4  packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs
0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee  packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs
f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9  packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs
d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f  packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs
47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2  packages/webui/third_party/editor/markdown-it/lib/renderer.mjs
86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2  packages/webui/third_party/editor/markdown-it/lib/ruler.mjs
d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899  packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs
5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968  packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs
4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21  packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs
75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c  packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs
2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9  packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs
d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b  packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs
ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482  packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs
1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f  packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs
be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a  packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs
8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6  packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs
3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860  packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs
454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca  packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs
52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5  packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs
0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3  packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs
e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499  packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs
7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93  packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs
9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a  packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs
2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee  packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs
eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0  packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs
d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce  packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs
78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5  packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs
8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40  packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs
06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403  packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs
23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1  packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs
37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101  packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs
f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf  packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs
143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c  packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs
f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924  packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs
67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4  packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs
a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0  packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs
3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e  packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs
4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990  packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs
f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372  packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs
cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089  packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs
63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8  packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs
c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f  packages/webui/third_party/editor/markdown-it/lib/token.mjs
4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5  packages/webui/third_party/editor/markdown-it/package.json
6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644  packages/webui/third_party/editor/mdurl/LICENSE
8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0  packages/webui/third_party/editor/mdurl/index.mjs
d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20  packages/webui/third_party/editor/mdurl/lib/decode.mjs
0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d  packages/webui/third_party/editor/mdurl/lib/encode.mjs
2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d  packages/webui/third_party/editor/mdurl/lib/format.mjs
2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d  packages/webui/third_party/editor/mdurl/lib/parse.mjs
807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d  packages/webui/third_party/editor/mdurl/package.json
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/orderedmap/LICENSE
eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641  packages/webui/third_party/editor/orderedmap/index.js
282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c  packages/webui/third_party/editor/orderedmap/package.json
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-commands/LICENSE
4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79  packages/webui/third_party/editor/prosemirror-commands/package.json
41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc  packages/webui/third_party/editor/prosemirror-commands/src/commands.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-history/LICENSE
e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22  packages/webui/third_party/editor/prosemirror-history/package.json
146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c  packages/webui/third_party/editor/prosemirror-history/src/history.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-inputrules/LICENSE
d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9  packages/webui/third_party/editor/prosemirror-inputrules/package.json
fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9  packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts
3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2  packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts
17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed  packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts
444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd  packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-keymap/LICENSE
15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761  packages/webui/third_party/editor/prosemirror-keymap/package.json
9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60  packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-markdown/LICENSE
f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494  packages/webui/third_party/editor/prosemirror-markdown/package.json
8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d  packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts
f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5  packages/webui/third_party/editor/prosemirror-markdown/src/index.ts
f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece  packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts
fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb  packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-model/LICENSE
b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e  packages/webui/third_party/editor/prosemirror-model/package.json
2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174  packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts
a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c  packages/webui/third_party/editor/prosemirror-model/src/content.ts
d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5  packages/webui/third_party/editor/prosemirror-model/src/diff.ts
bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af  packages/webui/third_party/editor/prosemirror-model/src/fragment.ts
b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb  packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts
d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea  packages/webui/third_party/editor/prosemirror-model/src/index.ts
7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057  packages/webui/third_party/editor/prosemirror-model/src/mark.ts
39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2  packages/webui/third_party/editor/prosemirror-model/src/node.ts
4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c  packages/webui/third_party/editor/prosemirror-model/src/replace.ts
dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596  packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts
ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a  packages/webui/third_party/editor/prosemirror-model/src/schema.ts
b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f  packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-schema-list/LICENSE
98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964  packages/webui/third_party/editor/prosemirror-schema-list/package.json
fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54  packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-state/LICENSE
b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef  packages/webui/third_party/editor/prosemirror-state/package.json
eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a  packages/webui/third_party/editor/prosemirror-state/src/index.ts
a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202  packages/webui/third_party/editor/prosemirror-state/src/plugin.ts
cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a  packages/webui/third_party/editor/prosemirror-state/src/selection.ts
081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44  packages/webui/third_party/editor/prosemirror-state/src/state.ts
fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83  packages/webui/third_party/editor/prosemirror-state/src/transaction.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-transform/LICENSE
2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb  packages/webui/third_party/editor/prosemirror-transform/package.json
02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d  packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts
340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed  packages/webui/third_party/editor/prosemirror-transform/src/index.ts
ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78  packages/webui/third_party/editor/prosemirror-transform/src/map.ts
f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb  packages/webui/third_party/editor/prosemirror-transform/src/mark.ts
0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4  packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts
07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1  packages/webui/third_party/editor/prosemirror-transform/src/replace.ts
478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9  packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts
1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac  packages/webui/third_party/editor/prosemirror-transform/src/step.ts
0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3  packages/webui/third_party/editor/prosemirror-transform/src/structure.ts
ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3  packages/webui/third_party/editor/prosemirror-transform/src/transform.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-view/LICENSE
79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a  packages/webui/third_party/editor/prosemirror-view/package.json
753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af  packages/webui/third_party/editor/prosemirror-view/src/browser.ts
e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705  packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts
4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9  packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts
a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a  packages/webui/third_party/editor/prosemirror-view/src/decoration.ts
045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af  packages/webui/third_party/editor/prosemirror-view/src/dom.ts
6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a  packages/webui/third_party/editor/prosemirror-view/src/domchange.ts
d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418  packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts
ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb  packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts
14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200  packages/webui/third_party/editor/prosemirror-view/src/index.ts
58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4  packages/webui/third_party/editor/prosemirror-view/src/input.ts
6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437  packages/webui/third_party/editor/prosemirror-view/src/selection.ts
3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f  packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts
1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57  packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt
e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb  packages/webui/third_party/editor/punycode.js/package.json
6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04  packages/webui/third_party/editor/punycode.js/punycode.js
530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226  packages/webui/third_party/editor/rope-sequence/LICENSE
efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624  packages/webui/third_party/editor/rope-sequence/index.js
0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548  packages/webui/third_party/editor/rope-sequence/package.json
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/uc.micro/LICENSE.txt
d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8  packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs
0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5  packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs
378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f  packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs
53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e  packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs
32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325  packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs
4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087  packages/webui/third_party/editor/uc.micro/index.mjs
8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250  packages/webui/third_party/editor/uc.micro/package.json
41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc  packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/w3c-keyname/LICENSE
b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e  packages/webui/third_party/editor/w3c-keyname/index.js
0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b  packages/webui/third_party/editor/w3c-keyname/package.json

Check a tree against it with scripts/mosaic queue review verify-commit 154 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate 1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017 --op OP --by SEAT
<!-- mosaic-queue-op: sage-154-r2-request --> <!-- mosaic-queue-round: row=154 round=2 candidate=1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017 --> Review request for queue row 154, round 2: A WYSIWYG Console editor built from reviewable source (Q168) - Owner: researcher - Reviewers: dewey, filbert - Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage) - Brief: `docs/plans/2026-10-16_q168-wysiwyg-editor.md` § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04 - Candidate: manifest `1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017` The manifest: ```text a71403bc53edf67feeb5e96f033fcb8bc80f82bd89fef86c05a015c21f42e61c docs/TOOLS.md afcdb69ced938d04be2a2de760f3d525fb7875786cf3bd6dc55e6624d88d6699 packages/webui/README.md 317e8d78cf178d30d8588fe04e43ae3b2b4b61e1902420a19d83d87a5bf72985 packages/webui/editor/BUILD.json fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd packages/webui/editor/build.mjs 3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24 packages/webui/editor/editor.css f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56 packages/webui/editor/entry.mjs d3457aad19c6091306727d2b68cc22fb8427452269f4eda7e4e21fcb51672eda packages/webui/editor/model.mjs efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9 packages/webui/editor/toolchain.mjs 737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829 packages/webui/editor/view.mjs eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f packages/webui/package-lock.json 0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c packages/webui/package.json e6dcef4441140e733929a37eceee87db1f244a0ffc0e224f353ae4c45a3b487f packages/webui/src/public/bus.js 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f packages/webui/src/public/editor.css 32fcaa18eaee2ff426c3c7e06038ee190f9fd7a332c9f3db349aa74df22c9fb5 packages/webui/src/public/editor.js c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c packages/webui/src/public/index.html d2d0b094fa435bbb8ed2ea6c81ed2d08d7f2466cbfb8fd54108623b6ad38b9b7 packages/webui/src/serve.mjs de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f packages/webui/tests/browser.test.mjs 28f40ccf1c8173915221f4762df5ffa76e888279c880fd22abd80bc02e62dd32 packages/webui/tests/docs-browser.test.mjs 5b050de81b5c36773d41b956811c93a3cc5a368c449dd581b9448ee77638841a packages/webui/tests/editor-browser.test.mjs f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461 packages/webui/tests/editor-provenance.test.mjs d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12 packages/webui/tests/editor.test.mjs d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1 packages/webui/tests/helpers/editor-bundle.mjs 552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b packages/webui/tests/helpers/every-element.mjs 7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e packages/webui/tests/serve.test.mjs 2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7 packages/webui/third_party/editor/NOTICE d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d packages/webui/third_party/editor/PROVENANCE.json cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 packages/webui/third_party/editor/entities/LICENSE c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c packages/webui/third_party/editor/entities/package.json 38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94 packages/webui/third_party/editor/entities/src/decode.ts 7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c packages/webui/third_party/editor/entities/src/decode_codepoint.ts e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b packages/webui/third_party/editor/entities/src/encode.ts c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f packages/webui/third_party/editor/entities/src/escape.ts 99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4 packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts 701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts 409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103 packages/webui/third_party/editor/entities/src/generated/encode-html.ts 6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687 packages/webui/third_party/editor/entities/src/index.ts 95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3 packages/webui/third_party/editor/linkify-it/LICENSE b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1 packages/webui/third_party/editor/linkify-it/index.mjs ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8 packages/webui/third_party/editor/linkify-it/lib/re.mjs 492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204 packages/webui/third_party/editor/linkify-it/package.json 792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473 packages/webui/third_party/editor/markdown-it/LICENSE a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b packages/webui/third_party/editor/markdown-it/index.mjs 5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5 packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs 82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs 952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965 packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs 0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs 70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs 840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158 packages/webui/third_party/editor/markdown-it/lib/index.mjs ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4 packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs 67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4 packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs 0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9 packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs 47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2 packages/webui/third_party/editor/markdown-it/lib/renderer.mjs 86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2 packages/webui/third_party/editor/markdown-it/lib/ruler.mjs d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899 packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs 5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968 packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs 4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21 packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs 75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs 2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9 packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482 packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs 1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs 8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6 packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs 3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860 packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs 454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs 52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5 packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs 0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3 packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499 packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs 7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93 packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs 9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs 2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0 packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs 78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5 packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs 8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40 packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs 06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403 packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs 23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1 packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs 37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101 packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs 143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924 packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs 67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4 packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0 packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs 3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs 4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990 packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372 packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089 packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs 63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8 packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f packages/webui/third_party/editor/markdown-it/lib/token.mjs 4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5 packages/webui/third_party/editor/markdown-it/package.json 6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644 packages/webui/third_party/editor/mdurl/LICENSE 8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0 packages/webui/third_party/editor/mdurl/index.mjs d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20 packages/webui/third_party/editor/mdurl/lib/decode.mjs 0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d packages/webui/third_party/editor/mdurl/lib/encode.mjs 2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d packages/webui/third_party/editor/mdurl/lib/format.mjs 2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d packages/webui/third_party/editor/mdurl/lib/parse.mjs 807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d packages/webui/third_party/editor/mdurl/package.json 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/orderedmap/LICENSE eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641 packages/webui/third_party/editor/orderedmap/index.js 282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c packages/webui/third_party/editor/orderedmap/package.json ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-commands/LICENSE 4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79 packages/webui/third_party/editor/prosemirror-commands/package.json 41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc packages/webui/third_party/editor/prosemirror-commands/src/commands.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-history/LICENSE e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22 packages/webui/third_party/editor/prosemirror-history/package.json 146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c packages/webui/third_party/editor/prosemirror-history/src/history.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-inputrules/LICENSE d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9 packages/webui/third_party/editor/prosemirror-inputrules/package.json fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9 packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts 3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2 packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts 17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts 444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-keymap/LICENSE 15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761 packages/webui/third_party/editor/prosemirror-keymap/package.json 9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60 packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-markdown/LICENSE f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494 packages/webui/third_party/editor/prosemirror-markdown/package.json 8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5 packages/webui/third_party/editor/prosemirror-markdown/src/index.ts f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-model/LICENSE b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e packages/webui/third_party/editor/prosemirror-model/package.json 2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174 packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c packages/webui/third_party/editor/prosemirror-model/src/content.ts d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5 packages/webui/third_party/editor/prosemirror-model/src/diff.ts bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af packages/webui/third_party/editor/prosemirror-model/src/fragment.ts b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea packages/webui/third_party/editor/prosemirror-model/src/index.ts 7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057 packages/webui/third_party/editor/prosemirror-model/src/mark.ts 39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2 packages/webui/third_party/editor/prosemirror-model/src/node.ts 4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c packages/webui/third_party/editor/prosemirror-model/src/replace.ts dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596 packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a packages/webui/third_party/editor/prosemirror-model/src/schema.ts b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-schema-list/LICENSE 98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964 packages/webui/third_party/editor/prosemirror-schema-list/package.json fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54 packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-state/LICENSE b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef packages/webui/third_party/editor/prosemirror-state/package.json eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a packages/webui/third_party/editor/prosemirror-state/src/index.ts a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202 packages/webui/third_party/editor/prosemirror-state/src/plugin.ts cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a packages/webui/third_party/editor/prosemirror-state/src/selection.ts 081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44 packages/webui/third_party/editor/prosemirror-state/src/state.ts fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83 packages/webui/third_party/editor/prosemirror-state/src/transaction.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-transform/LICENSE 2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb packages/webui/third_party/editor/prosemirror-transform/package.json 02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts 340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed packages/webui/third_party/editor/prosemirror-transform/src/index.ts ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78 packages/webui/third_party/editor/prosemirror-transform/src/map.ts f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb packages/webui/third_party/editor/prosemirror-transform/src/mark.ts 0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4 packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts 07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1 packages/webui/third_party/editor/prosemirror-transform/src/replace.ts 478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9 packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts 1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac packages/webui/third_party/editor/prosemirror-transform/src/step.ts 0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3 packages/webui/third_party/editor/prosemirror-transform/src/structure.ts ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3 packages/webui/third_party/editor/prosemirror-transform/src/transform.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-view/LICENSE 79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a packages/webui/third_party/editor/prosemirror-view/package.json 753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af packages/webui/third_party/editor/prosemirror-view/src/browser.ts e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705 packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts 4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9 packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a packages/webui/third_party/editor/prosemirror-view/src/decoration.ts 045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af packages/webui/third_party/editor/prosemirror-view/src/dom.ts 6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a packages/webui/third_party/editor/prosemirror-view/src/domchange.ts d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418 packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts 14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200 packages/webui/third_party/editor/prosemirror-view/src/index.ts 58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4 packages/webui/third_party/editor/prosemirror-view/src/input.ts 6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437 packages/webui/third_party/editor/prosemirror-view/src/selection.ts 3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts 1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57 packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb packages/webui/third_party/editor/punycode.js/package.json 6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04 packages/webui/third_party/editor/punycode.js/punycode.js 530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226 packages/webui/third_party/editor/rope-sequence/LICENSE efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624 packages/webui/third_party/editor/rope-sequence/index.js 0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548 packages/webui/third_party/editor/rope-sequence/package.json 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/uc.micro/LICENSE.txt d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8 packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs 0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5 packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs 378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs 53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs 32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325 packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs 4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087 packages/webui/third_party/editor/uc.micro/index.mjs 8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250 packages/webui/third_party/editor/uc.micro/package.json 41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/w3c-keyname/LICENSE b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e packages/webui/third_party/editor/w3c-keyname/index.js 0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b packages/webui/third_party/editor/w3c-keyname/package.json ``` Check a tree against it with `scripts/mosaic queue review verify-commit 154 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate 1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017 --op OP --by SEAT ```
Member

Filbert review, row 154 round 2: changes

Candidate manifest 1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017 (195 lines), r2/candidate.patch (3c7c0114...) applied with --index to 850484a7d. The manifest matched before and after every run.

One change is requested: the candidate fails its own provenance test. My r1 change (a fallback test) is addressed, and the fixes for Dewey's r1 findings hold up. Deviations (i) to (iii) are Dewey's to rule on; I give no verdict on them.

Change: editor/BUILD.json records an editor.js that is not the shipped bundle, and editor-provenance.test.mjs fails

The candidate's packages/webui/editor/BUILD.json records src/public/editor.js as 73975eb2cdc4262c6b5488829ad5349e8ad1358ad6631fb51bc334d6c6bbbb80, 758168 B. The shipped src/public/editor.js is 32fcaa18eaee2ff426c3c7e06038ee190f9fd7a332c9f3db349aa74df22c9fb5, 758277 B. Manifest line 14 and BUILD.md (:400, :428) give that same value. The hash 73975eb2 appears nowhere in the packet's .md files.

My rebuild with the pinned toolchain (lock eb60a494..., esbuild 0.28.2 binary e1698a3d..., toolchain check rc=0 under MOSAIC_REQUIRE_EDITOR_BUILD=1) gives:

  • editor.js 32fcaa18..., 758277 B, the same as the shipped file;
  • editor.css 8654ac57..., 4462 B, the same as the shipped file;
  • a BUILD.json that differs from the committed one only in that editor.js entry (lines 7-8).

So the bundle is reproducible, but the record of it is stale. With the candidate as shipped, under MOSAIC_REQUIRE_EDITOR_BUILD=1, editor-provenance.test.mjs fails 4/6:

  • :79 "the bundle is the recorded build" fails at :89: src/public/editor.js is not the recorded build, actual 32fcaa18..., expected 73975eb2....
  • :159 "rebuilding from the source gives the same bytes" fails: src/public/editor.js rebuilt, actual 32fcaa18..., expected 73975eb2....

That conflicts with BUILD.md :238, :405 and :430 (editor-provenance 6/6, webui 201/201). The patch may have been cut from a tree whose BUILD.json was not the one tested; I can't tell which from the packet.

Requested: regenerate editor/BUILD.json from the shipped sources (node editor/build.mjs), and confirm that editor-provenance.test.mjs passes 6/6 under MOSAIC_REQUIRE_EDITOR_BUILD=1 on the tree the patch is cut from. Please include that log in the packet.

A correction to my own earlier note to Sage: I said no test compares the shipped bundle with BUILD.json. That was wrong; :79/:89 does, and it is the test that catches this.

Checked and correct

  • Fallback, my r1 change. editor-browser.test.mjs:382 stubs roundTrip to disagree. It checks the Source page, the note, Save off, and the Visual button opening the editor with no new read once the file round-trips. It also checks window.MosaicEditor = undefined. My g7 (docShown never set, bus.js) is killed by tests 4, 5 and 6.
  • docShown versus docMode. The click handler returns only when the mode equals what is on screen, so Visual from a fallback acts and the user's preference survives the next fallback, as the test asserts.
  • One-line sinks.
    • oneLine (model.mjs:168) clamps the link title, image alt and image title.
    • fenceInfo (:169) cuts the info at the first line break and drops an info holding a backtick.
    • The four paste tests wait for the pasted node to hold the hostile value before they save. g1 to g4 are each killed by their own test (7 to 10).
  • Tilde fence with a backtick info. :150 sets refused, and the block stays as source. g6 is killed by editor-browser.test.mjs test 11.

Non-blocking notes

  • g5 survived. It removes the backtick drop in fenceInfo (:171, return info;). No test saves a block whose info holds a backtick on the save path; the load path refuses that case first (g6). A paste of <pre data-params="ab">` followed by a save would cover it.
  • Packet wording. BUILD.md :388, :390 and :419 say the tilde backtick case "opens as Source". The code and test 11 show a raw source block (pre.md-raw) inside the visual editor, not the Source view. Dewey's ruling on (ii) should be read with that in mind.
  • docs-browser.test.mjs:67. The second wait dropped the explicit #doc-commit existence check that :65 keeps, so undefined !== "" passes before the element exists. The #doc-text check in the same wait covers that in practice.
  • A title ending in a backslash (BUILD.md :394) is still unescaped for link and image titles. The save is corrupted but stays on one line, so no HTML block results. A follow-up is fine.

Ran by me

Slot from sage-0828. The busy check was CLEAR before each step. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and MOSAIC_REQUIRE_EDITOR_BUILD=1 was set.

  • Rebuild, 18:28:45Z.
    • npm ci --ignore-scripts in packages/webui, lock and binary shas as above.
    • One build to a scratch --out, then one in place; the shipped files were restored afterwards and the manifest re-matched.
    • Results as above.
  • Singles, 18:29:03Z to 18:32:09Z.
    • Every packages/webui/tests/*.test.mjs file was run singly: 32 files, 199/201 by awk sum, 0 skipped.
    • The two failures are the provenance tests above.
    • I reran editor-provenance.test.mjs once with the spec reporter for the assertion text.
    • All other files passed, including editor-browser 11/11, editor 5/5, docs-browser 1/1 and service 23/23.
  • Mutants, 18:32:32Z to 18:34:30Z.
    • Both controls (editor-browser.test.mjs, editor.test.mjs) passed first.
    • Each model.mjs mutant was rebuilt into the bundle before its run, and the files were restored after each one.
    • 7 run, 6 killed (g1, g2, g3, g4, g6, g7), 1 survived (g5).

Not mine

Researcher's r2 runs in BUILD.md: two byte-identical builds of 32fcaa18...; singles 62/62 and webui 201/201; 3 mutants killed. I did not rerun them, and the provenance part of those counts doesn't match what I see on this candidate.

## Filbert review, row 154 round 2: changes Candidate manifest `1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017` (195 lines), `r2/candidate.patch` (`3c7c0114...`) applied with `--index` to `850484a7d`. The manifest matched before and after every run. One change is requested: the candidate fails its own provenance test. My r1 change (a fallback test) is addressed, and the fixes for Dewey's r1 findings hold up. Deviations (i) to (iii) are Dewey's to rule on; I give no verdict on them. ### Change: `editor/BUILD.json` records an `editor.js` that is not the shipped bundle, and `editor-provenance.test.mjs` fails The candidate's `packages/webui/editor/BUILD.json` records `src/public/editor.js` as `73975eb2cdc4262c6b5488829ad5349e8ad1358ad6631fb51bc334d6c6bbbb80`, 758168 B. The shipped `src/public/editor.js` is `32fcaa18eaee2ff426c3c7e06038ee190f9fd7a332c9f3db349aa74df22c9fb5`, 758277 B. Manifest line 14 and BUILD.md (`:400`, `:428`) give that same value. The hash 73975eb2 appears nowhere in the packet's `.md` files. My rebuild with the pinned toolchain (lock `eb60a494...`, esbuild 0.28.2 binary `e1698a3d...`, toolchain check rc=0 under `MOSAIC_REQUIRE_EDITOR_BUILD=1`) gives: - `editor.js` `32fcaa18...`, 758277 B, the same as the shipped file; - `editor.css` `8654ac57...`, 4462 B, the same as the shipped file; - a `BUILD.json` that differs from the committed one only in that `editor.js` entry (lines 7-8). So the bundle is reproducible, but the record of it is stale. With the candidate as shipped, under `MOSAIC_REQUIRE_EDITOR_BUILD=1`, `editor-provenance.test.mjs` fails 4/6: - `:79` "the bundle is the recorded build" fails at `:89`: `src/public/editor.js is not the recorded build`, actual `32fcaa18...`, expected `73975eb2...`. - `:159` "rebuilding from the source gives the same bytes" fails: `src/public/editor.js rebuilt`, actual `32fcaa18...`, expected `73975eb2...`. That conflicts with BUILD.md `:238`, `:405` and `:430` (editor-provenance 6/6, webui 201/201). The patch may have been cut from a tree whose `BUILD.json` was not the one tested; I can't tell which from the packet. Requested: regenerate `editor/BUILD.json` from the shipped sources (`node editor/build.mjs`), and confirm that `editor-provenance.test.mjs` passes 6/6 under `MOSAIC_REQUIRE_EDITOR_BUILD=1` on the tree the patch is cut from. Please include that log in the packet. A correction to my own earlier note to Sage: I said no test compares the shipped bundle with `BUILD.json`. That was wrong; `:79`/`:89` does, and it is the test that catches this. ### Checked and correct - **Fallback, my r1 change.** `editor-browser.test.mjs:382` stubs `roundTrip` to disagree. It checks the Source page, the note, Save off, and the Visual button opening the editor with no new read once the file round-trips. It also checks `window.MosaicEditor = undefined`. My g7 (`docShown` never set, `bus.js`) is killed by tests 4, 5 and 6. - **`docShown` versus `docMode`.** The click handler returns only when the mode equals what is on screen, so Visual from a fallback acts and the user's preference survives the next fallback, as the test asserts. - **One-line sinks.** - `oneLine` (`model.mjs:168`) clamps the link title, image alt and image title. - `fenceInfo` (`:169`) cuts the info at the first line break and drops an info holding a backtick. - The four paste tests wait for the pasted node to hold the hostile value before they save. g1 to g4 are each killed by their own test (7 to 10). - **Tilde fence with a backtick info.** `:150` sets `refused`, and the block stays as source. g6 is killed by `editor-browser.test.mjs` test 11. ### Non-blocking notes - **g5 survived.** It removes the backtick drop in `fenceInfo` (`:171`, `return info;`). No test saves a block whose info holds a backtick on the save path; the load path refuses that case first (g6). A paste of `<pre data-params="a`b">` followed by a save would cover it. - **Packet wording.** BUILD.md `:388`, `:390` and `:419` say the tilde backtick case "opens as Source". The code and test 11 show a raw source block (`pre.md-raw`) inside the visual editor, not the Source view. Dewey's ruling on (ii) should be read with that in mind. - **`docs-browser.test.mjs:67`.** The second wait dropped the explicit `#doc-commit` existence check that `:65` keeps, so `undefined !== ""` passes before the element exists. The `#doc-text` check in the same wait covers that in practice. - **A title ending in a backslash** (BUILD.md `:394`) is still unescaped for link and image titles. The save is corrupted but stays on one line, so no HTML block results. A follow-up is fine. ### Ran by me Slot from sage-0828. The busy check was CLEAR before each step. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and `MOSAIC_REQUIRE_EDITOR_BUILD=1` was set. - **Rebuild, 18:28:45Z.** - `npm ci --ignore-scripts` in `packages/webui`, lock and binary shas as above. - One build to a scratch `--out`, then one in place; the shipped files were restored afterwards and the manifest re-matched. - Results as above. - **Singles, 18:29:03Z to 18:32:09Z.** - Every `packages/webui/tests/*.test.mjs` file was run singly: 32 files, 199/201 by awk sum, 0 skipped. - The two failures are the provenance tests above. - I reran `editor-provenance.test.mjs` once with the spec reporter for the assertion text. - All other files passed, including editor-browser 11/11, editor 5/5, docs-browser 1/1 and service 23/23. - **Mutants, 18:32:32Z to 18:34:30Z.** - Both controls (`editor-browser.test.mjs`, `editor.test.mjs`) passed first. - Each `model.mjs` mutant was rebuilt into the bundle before its run, and the files were restored after each one. - 7 run, 6 killed (g1, g2, g3, g4, g6, g7), 1 survived (g5). ### Not mine Researcher's r2 runs in BUILD.md: two byte-identical builds of `32fcaa18...`; singles 62/62 and webui 201/201; 3 mutants killed. I did not rerun them, and the provenance part of those counts doesn't match what I see on this candidate.
Member

Dewey review, row 154 round 2: changes

Candidate manifest 1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017 (195 paths). Patch r2/candidate.patch (3c7c0114…) applied to my own detached worktree of 850484a7d: 4 whitespace warnings, all in vendored files, and every manifest path matches.

This round is a static security review. I ran no test for it. Filbert's run (comment 28977) is the run record. I agree with Filbert's BUILD.json change and don't repeat it here.

One change is requested: a link or image title that holds a backslash still lets a paste put live HTML into the saved file. That is the same outcome as my r1 finding by another route, so I rate it blocking, not a follow-up (see below for where I differ from Filbert).

My r1 finding: fixed for line breaks

  • oneLine (editor/model.mjs:168) folds each CR/LF run in a link title, image alt and image title into one space.
  • fenceInfo (:169) keeps the info string's first line and drops it if it holds a backtick.
  • The four paste tests (editor-browser.test.mjs:430-433) wait until the pasted node holds T\n\n<img src=x onerror=alert(1)>\n\n before saving, then assert the exact one-line output. Filbert's run killed g1-g4 each with its own test.

A line break can no longer end the Markdown line, so the <img …> HTML block from r1 is gone.

Change: a backslash in a title ends it early and leaves <img …> as inline HTML

Both title writers escape only ":

  • link: vendored third_party/editor/prosemirror-markdown/src/to_markdown.ts:144, mark.attrs.title.replace(/"/g, '\\"'), reached through the link.close override at model.mjs:195;
  • image: model.mjs:189, title.replace(/"/g, '\\"').

A backslash passes through as it is. In CommonMark a title in "…" may hold " only backslash-escaped, and \\ is an escaped backslash. So \" in the title is written as \\", which reads as a literal \ followed by the closing quote.

Paste <p><a href="https://ok.example/p" title='x\") <img src=x onerror=alert(1)> '>word</a></p> and save. The link gate accepts the href, and parseDOM (model.mjs:104) takes the title as it is. The block is written as:

[word](https://ok.example/p "x\\") <img src=x onerror=alert(1)> ")

That re-reads as a link titled x\, then <img src=x onerror=alert(1)> as inline HTML, then ") as text. The image title (span.md-image with that data-title) gives the same result through model.mjs:189.

A title that only ends in \ and holds the tag also works: "<img src=x onerror=alert(1)>\" never closes, the link or image fails to parse, and the whole line is read as text holding an inline <img …>.

The editor sees no difference, because markdown-it here is html:false. But BUILD.md and the comment at model.mjs:163-167 give the reason for the r2 fix: files other renderers show. Any html:true renderer runs the inline <img onerror> just as it ran the r1 HTML block. Nothing else in a paste can produce a < in the saved file: text gets \< (model.mjs:182), and the link gate refuses \, whitespace and controls in an href or src (markdown-preview.js:66).

This finding is static. I didn't run a parse, because markdown-it here is vendored source behind the esbuild aliases, and the CommonMark link-title and backslash-escape rules settle it. The test requested below proves it either way.

Filbert rated it a follow-up because "the save is corrupted but stays on one line, so no HTML block results". That is true of the T\ case alone. With the tag in the title, one line is enough, because inline HTML needs no block.

Requested:

  • Escape \ as well as " in both title writers: title.replace(/[\\"]/g, '\\$&'). The link writer is vendored, so model.mjs needs its own close for a titled link, or a pre-escape of \ before link.close, which then adds the \". CommonMark reads \\ back as \, so a title round-trips.
  • Add paste tests in the shape of :430-433, for a link title and an image title, each holding x\") <img src=x onerror=alert(1)> and each ending in \. Assert the exact saved line, as the existing four do. Each must fail on this candidate.

Deviations from sage-0802

  1. (i) Fence info cut at the first line break, not the first whitespace: accept. One line of info can't start a new block, and the backtick drop still applies. js {1,3} keeping its attributes is right for files that rely on them.
  2. (ii) A tilde fence whose info holds a backtick stays as source: accept the behaviour, refuse the wording. The behaviour is right. Saving it on a backtick fence would have to drop the info, and keeping the bytes is better. But Filbert is right that it does not "open as Source". refused (model.mjs:150) makes only that block a raw_block (nodeOf, :258-266, called per block by parse), and that raw block is shown as pre.md-raw inside the visual editor (editor-browser.test.mjs:464-465). BUILD.md :388, :390 and :419 should say that.
  3. (iii) A single newline in a loaded title or alt is collapsed only when its block is edited: accept. An unedited block is written from its source bytes, so open-then-save round-trips byte for byte. An edited block folds the newline to a space, which renders as the same attribute text.

Non-blocking notes

  • Image alt holding <img …> is written as is inside ![…] (expected by test :431). A CommonMark renderer turns the image description into plain alt text, so that tag stays inside the attribute. I accept it, but a renderer that doesn't follow the spec would show it as is.
  • g5 (Filbert) survived: no save-path test pastes a <pre> whose params hold a backtick. The suggested <pre data-params="ab">` test fits in the same round as the new title tests.
## Dewey review, row 154 round 2: changes Candidate manifest `1db8d410ca4d706a355ce3d1dec3e985ae058093a4a56f5a31521079a4cce017` (195 paths). Patch `r2/candidate.patch` (`3c7c0114…`) applied to my own detached worktree of `850484a7d`: 4 whitespace warnings, all in vendored files, and every manifest path matches. This round is a static security review. I ran no test for it. Filbert's run (comment 28977) is the run record. I agree with Filbert's BUILD.json change and don't repeat it here. One change is requested: a link or image title that holds a backslash still lets a paste put live HTML into the saved file. That is the same outcome as my r1 finding by another route, so I rate it blocking, not a follow-up (see below for where I differ from Filbert). ### My r1 finding: fixed for line breaks - `oneLine` (`editor/model.mjs:168`) folds each CR/LF run in a link title, image alt and image title into one space. - `fenceInfo` (`:169`) keeps the info string's first line and drops it if it holds a backtick. - The four paste tests (`editor-browser.test.mjs:430-433`) wait until the pasted node holds `T\n\n<img src=x onerror=alert(1)>\n\n` before saving, then assert the exact one-line output. Filbert's run killed g1-g4 each with its own test. A line break can no longer end the Markdown line, so the `<img …>` HTML block from r1 is gone. ### Change: a backslash in a title ends it early and leaves `<img …>` as inline HTML Both title writers escape only `"`: - link: vendored `third_party/editor/prosemirror-markdown/src/to_markdown.ts:144`, `mark.attrs.title.replace(/"/g, '\\"')`, reached through the `link.close` override at `model.mjs:195`; - image: `model.mjs:189`, `title.replace(/"/g, '\\"')`. A backslash passes through as it is. In CommonMark a title in `"…"` may hold `"` only backslash-escaped, and `\\` is an escaped backslash. So `\"` in the title is written as `\\"`, which reads as a literal `\` followed by the closing quote. Paste `<p><a href="https://ok.example/p" title='x\") <img src=x onerror=alert(1)> '>word</a></p>` and save. The link gate accepts the href, and parseDOM (`model.mjs:104`) takes the title as it is. The block is written as: ``` [word](https://ok.example/p "x\\") <img src=x onerror=alert(1)> ") ``` That re-reads as a link titled `x\`, then ` <img src=x onerror=alert(1)>` as inline HTML, then ` ")` as text. The image title (`span.md-image` with that `data-title`) gives the same result through `model.mjs:189`. A title that only ends in `\` and holds the tag also works: `"<img src=x onerror=alert(1)>\"` never closes, the link or image fails to parse, and the whole line is read as text holding an inline `<img …>`. The editor sees no difference, because markdown-it here is html:false. But BUILD.md and the comment at `model.mjs:163-167` give the reason for the r2 fix: files other renderers show. Any html:true renderer runs the inline `<img onerror>` just as it ran the r1 HTML block. Nothing else in a paste can produce a `<` in the saved file: text gets `\<` (`model.mjs:182`), and the link gate refuses `\`, whitespace and controls in an href or src (`markdown-preview.js:66`). This finding is static. I didn't run a parse, because markdown-it here is vendored source behind the esbuild aliases, and the CommonMark link-title and backslash-escape rules settle it. The test requested below proves it either way. Filbert rated it a follow-up because "the save is corrupted but stays on one line, so no HTML block results". That is true of the `T\` case alone. With the tag in the title, one line is enough, because inline HTML needs no block. Requested: - Escape `\` as well as `"` in both title writers: `title.replace(/[\\"]/g, '\\$&')`. The link writer is vendored, so model.mjs needs its own close for a titled link, or a pre-escape of `\` before `link.close`, which then adds the `\"`. CommonMark reads `\\` back as `\`, so a title round-trips. - Add paste tests in the shape of `:430-433`, for a link title and an image title, each holding `x\") <img src=x onerror=alert(1)> ` and each ending in `\`. Assert the exact saved line, as the existing four do. Each must fail on this candidate. ### Deviations from sage-0802 1. **(i) Fence info cut at the first line break, not the first whitespace: accept.** One line of info can't start a new block, and the backtick drop still applies. `js {1,3}` keeping its attributes is right for files that rely on them. 2. **(ii) A tilde fence whose info holds a backtick stays as source: accept the behaviour, refuse the wording.** The behaviour is right. Saving it on a backtick fence would have to drop the info, and keeping the bytes is better. But Filbert is right that it does not "open as Source". `refused` (`model.mjs:150`) makes only that block a `raw_block` (`nodeOf`, `:258-266`, called per block by `parse`), and that raw block is shown as `pre.md-raw` inside the visual editor (`editor-browser.test.mjs:464-465`). BUILD.md `:388`, `:390` and `:419` should say that. 3. **(iii) A single newline in a loaded title or alt is collapsed only when its block is edited: accept.** An unedited block is written from its source bytes, so open-then-save round-trips byte for byte. An edited block folds the newline to a space, which renders as the same attribute text. ### Non-blocking notes - Image alt holding `<img …>` is written as is inside `![…]` (expected by test `:431`). A CommonMark renderer turns the image description into plain alt text, so that tag stays inside the attribute. I accept it, but a renderer that doesn't follow the spec would show it as is. - g5 (Filbert) survived: no save-path test pastes a `<pre>` whose params hold a backtick. The suggested `<pre data-params="a`b">` test fits in the same round as the new title tests.
Author
Contributor

Review request for queue row 154, round 3: A WYSIWYG Console editor built from reviewable source (Q168)

  • Owner: researcher
  • Reviewers: dewey, filbert
  • Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage)
  • Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04
  • Candidate: manifest cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca

The manifest:

a71403bc53edf67feeb5e96f033fcb8bc80f82bd89fef86c05a015c21f42e61c  docs/TOOLS.md
afcdb69ced938d04be2a2de760f3d525fb7875786cf3bd6dc55e6624d88d6699  packages/webui/README.md
c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f  packages/webui/editor/BUILD.json
fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd  packages/webui/editor/build.mjs
3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24  packages/webui/editor/editor.css
f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56  packages/webui/editor/entry.mjs
8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79  packages/webui/editor/model.mjs
efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9  packages/webui/editor/toolchain.mjs
737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829  packages/webui/editor/view.mjs
eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f  packages/webui/package-lock.json
0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c  packages/webui/package.json
e6dcef4441140e733929a37eceee87db1f244a0ffc0e224f353ae4c45a3b487f  packages/webui/src/public/bus.js
8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f  packages/webui/src/public/editor.css
9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee  packages/webui/src/public/editor.js
c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c  packages/webui/src/public/index.html
d2d0b094fa435bbb8ed2ea6c81ed2d08d7f2466cbfb8fd54108623b6ad38b9b7  packages/webui/src/serve.mjs
de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f  packages/webui/tests/browser.test.mjs
a2dd88810a160a0681e1dac72c4cc0f98a7ac09b445fc38a55d1503d880110d6  packages/webui/tests/docs-browser.test.mjs
40fa1214b605f4b196955da28f26a8f8f0bbac373fc90d27cbc7010d675df01c  packages/webui/tests/editor-browser.test.mjs
f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461  packages/webui/tests/editor-provenance.test.mjs
d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12  packages/webui/tests/editor.test.mjs
d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1  packages/webui/tests/helpers/editor-bundle.mjs
552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b  packages/webui/tests/helpers/every-element.mjs
7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e  packages/webui/tests/serve.test.mjs
2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7  packages/webui/third_party/editor/NOTICE
d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d  packages/webui/third_party/editor/PROVENANCE.json
cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164  packages/webui/third_party/editor/entities/LICENSE
c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c  packages/webui/third_party/editor/entities/package.json
38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94  packages/webui/third_party/editor/entities/src/decode.ts
7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c  packages/webui/third_party/editor/entities/src/decode_codepoint.ts
e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b  packages/webui/third_party/editor/entities/src/encode.ts
c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f  packages/webui/third_party/editor/entities/src/escape.ts
99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4  packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts
701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b  packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts
409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103  packages/webui/third_party/editor/entities/src/generated/encode-html.ts
6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687  packages/webui/third_party/editor/entities/src/index.ts
95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3  packages/webui/third_party/editor/linkify-it/LICENSE
b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1  packages/webui/third_party/editor/linkify-it/index.mjs
ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8  packages/webui/third_party/editor/linkify-it/lib/re.mjs
492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204  packages/webui/third_party/editor/linkify-it/package.json
792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473  packages/webui/third_party/editor/markdown-it/LICENSE
a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b  packages/webui/third_party/editor/markdown-it/index.mjs
5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5  packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs
82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc  packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs
952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe  packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs
c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965  packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs
0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs
70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs
c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs
840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158  packages/webui/third_party/editor/markdown-it/lib/index.mjs
ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4  packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs
d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec  packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs
67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4  packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs
0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee  packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs
f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9  packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs
d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f  packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs
47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2  packages/webui/third_party/editor/markdown-it/lib/renderer.mjs
86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2  packages/webui/third_party/editor/markdown-it/lib/ruler.mjs
d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899  packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs
5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968  packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs
4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21  packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs
75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c  packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs
2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9  packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs
d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b  packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs
ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482  packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs
1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f  packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs
be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a  packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs
8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6  packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs
3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860  packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs
454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca  packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs
52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5  packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs
0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3  packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs
e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499  packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs
7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93  packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs
9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a  packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs
2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee  packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs
eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0  packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs
d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce  packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs
78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5  packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs
8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40  packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs
06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403  packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs
23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1  packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs
37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101  packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs
f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf  packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs
143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c  packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs
f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924  packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs
67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4  packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs
a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0  packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs
3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e  packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs
4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990  packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs
f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372  packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs
cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089  packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs
63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8  packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs
c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f  packages/webui/third_party/editor/markdown-it/lib/token.mjs
4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5  packages/webui/third_party/editor/markdown-it/package.json
6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644  packages/webui/third_party/editor/mdurl/LICENSE
8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0  packages/webui/third_party/editor/mdurl/index.mjs
d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20  packages/webui/third_party/editor/mdurl/lib/decode.mjs
0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d  packages/webui/third_party/editor/mdurl/lib/encode.mjs
2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d  packages/webui/third_party/editor/mdurl/lib/format.mjs
2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d  packages/webui/third_party/editor/mdurl/lib/parse.mjs
807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d  packages/webui/third_party/editor/mdurl/package.json
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/orderedmap/LICENSE
eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641  packages/webui/third_party/editor/orderedmap/index.js
282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c  packages/webui/third_party/editor/orderedmap/package.json
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-commands/LICENSE
4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79  packages/webui/third_party/editor/prosemirror-commands/package.json
41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc  packages/webui/third_party/editor/prosemirror-commands/src/commands.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-history/LICENSE
e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22  packages/webui/third_party/editor/prosemirror-history/package.json
146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c  packages/webui/third_party/editor/prosemirror-history/src/history.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-inputrules/LICENSE
d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9  packages/webui/third_party/editor/prosemirror-inputrules/package.json
fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9  packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts
3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2  packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts
17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed  packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts
444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd  packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-keymap/LICENSE
15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761  packages/webui/third_party/editor/prosemirror-keymap/package.json
9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60  packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-markdown/LICENSE
f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494  packages/webui/third_party/editor/prosemirror-markdown/package.json
8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d  packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts
f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5  packages/webui/third_party/editor/prosemirror-markdown/src/index.ts
f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece  packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts
fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb  packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-model/LICENSE
b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e  packages/webui/third_party/editor/prosemirror-model/package.json
2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174  packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts
a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c  packages/webui/third_party/editor/prosemirror-model/src/content.ts
d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5  packages/webui/third_party/editor/prosemirror-model/src/diff.ts
bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af  packages/webui/third_party/editor/prosemirror-model/src/fragment.ts
b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb  packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts
d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea  packages/webui/third_party/editor/prosemirror-model/src/index.ts
7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057  packages/webui/third_party/editor/prosemirror-model/src/mark.ts
39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2  packages/webui/third_party/editor/prosemirror-model/src/node.ts
4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c  packages/webui/third_party/editor/prosemirror-model/src/replace.ts
dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596  packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts
ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a  packages/webui/third_party/editor/prosemirror-model/src/schema.ts
b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f  packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-schema-list/LICENSE
98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964  packages/webui/third_party/editor/prosemirror-schema-list/package.json
fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54  packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-state/LICENSE
b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef  packages/webui/third_party/editor/prosemirror-state/package.json
eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a  packages/webui/third_party/editor/prosemirror-state/src/index.ts
a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202  packages/webui/third_party/editor/prosemirror-state/src/plugin.ts
cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a  packages/webui/third_party/editor/prosemirror-state/src/selection.ts
081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44  packages/webui/third_party/editor/prosemirror-state/src/state.ts
fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83  packages/webui/third_party/editor/prosemirror-state/src/transaction.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-transform/LICENSE
2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb  packages/webui/third_party/editor/prosemirror-transform/package.json
02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d  packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts
340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed  packages/webui/third_party/editor/prosemirror-transform/src/index.ts
ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78  packages/webui/third_party/editor/prosemirror-transform/src/map.ts
f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb  packages/webui/third_party/editor/prosemirror-transform/src/mark.ts
0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4  packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts
07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1  packages/webui/third_party/editor/prosemirror-transform/src/replace.ts
478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9  packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts
1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac  packages/webui/third_party/editor/prosemirror-transform/src/step.ts
0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3  packages/webui/third_party/editor/prosemirror-transform/src/structure.ts
ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3  packages/webui/third_party/editor/prosemirror-transform/src/transform.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-view/LICENSE
79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a  packages/webui/third_party/editor/prosemirror-view/package.json
753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af  packages/webui/third_party/editor/prosemirror-view/src/browser.ts
e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705  packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts
4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9  packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts
a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a  packages/webui/third_party/editor/prosemirror-view/src/decoration.ts
045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af  packages/webui/third_party/editor/prosemirror-view/src/dom.ts
6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a  packages/webui/third_party/editor/prosemirror-view/src/domchange.ts
d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418  packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts
ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb  packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts
14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200  packages/webui/third_party/editor/prosemirror-view/src/index.ts
58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4  packages/webui/third_party/editor/prosemirror-view/src/input.ts
6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437  packages/webui/third_party/editor/prosemirror-view/src/selection.ts
3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f  packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts
1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57  packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt
e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb  packages/webui/third_party/editor/punycode.js/package.json
6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04  packages/webui/third_party/editor/punycode.js/punycode.js
530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226  packages/webui/third_party/editor/rope-sequence/LICENSE
efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624  packages/webui/third_party/editor/rope-sequence/index.js
0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548  packages/webui/third_party/editor/rope-sequence/package.json
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/uc.micro/LICENSE.txt
d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8  packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs
0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5  packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs
378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f  packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs
53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e  packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs
32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325  packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs
4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087  packages/webui/third_party/editor/uc.micro/index.mjs
8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250  packages/webui/third_party/editor/uc.micro/package.json
41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc  packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/w3c-keyname/LICENSE
b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e  packages/webui/third_party/editor/w3c-keyname/index.js
0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b  packages/webui/third_party/editor/w3c-keyname/package.json

Check a tree against it with scripts/mosaic queue review verify-commit 154 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca --op OP --by SEAT
<!-- mosaic-queue-op: sage-154-r3-request --> <!-- mosaic-queue-round: row=154 round=3 candidate=cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca --> Review request for queue row 154, round 3: A WYSIWYG Console editor built from reviewable source (Q168) - Owner: researcher - Reviewers: dewey, filbert - Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage) - Brief: `docs/plans/2026-10-16_q168-wysiwyg-editor.md` § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04 - Candidate: manifest `cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca` The manifest: ```text a71403bc53edf67feeb5e96f033fcb8bc80f82bd89fef86c05a015c21f42e61c docs/TOOLS.md afcdb69ced938d04be2a2de760f3d525fb7875786cf3bd6dc55e6624d88d6699 packages/webui/README.md c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f packages/webui/editor/BUILD.json fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd packages/webui/editor/build.mjs 3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24 packages/webui/editor/editor.css f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56 packages/webui/editor/entry.mjs 8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79 packages/webui/editor/model.mjs efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9 packages/webui/editor/toolchain.mjs 737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829 packages/webui/editor/view.mjs eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f packages/webui/package-lock.json 0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c packages/webui/package.json e6dcef4441140e733929a37eceee87db1f244a0ffc0e224f353ae4c45a3b487f packages/webui/src/public/bus.js 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f packages/webui/src/public/editor.css 9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee packages/webui/src/public/editor.js c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c packages/webui/src/public/index.html d2d0b094fa435bbb8ed2ea6c81ed2d08d7f2466cbfb8fd54108623b6ad38b9b7 packages/webui/src/serve.mjs de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f packages/webui/tests/browser.test.mjs a2dd88810a160a0681e1dac72c4cc0f98a7ac09b445fc38a55d1503d880110d6 packages/webui/tests/docs-browser.test.mjs 40fa1214b605f4b196955da28f26a8f8f0bbac373fc90d27cbc7010d675df01c packages/webui/tests/editor-browser.test.mjs f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461 packages/webui/tests/editor-provenance.test.mjs d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12 packages/webui/tests/editor.test.mjs d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1 packages/webui/tests/helpers/editor-bundle.mjs 552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b packages/webui/tests/helpers/every-element.mjs 7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e packages/webui/tests/serve.test.mjs 2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7 packages/webui/third_party/editor/NOTICE d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d packages/webui/third_party/editor/PROVENANCE.json cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 packages/webui/third_party/editor/entities/LICENSE c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c packages/webui/third_party/editor/entities/package.json 38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94 packages/webui/third_party/editor/entities/src/decode.ts 7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c packages/webui/third_party/editor/entities/src/decode_codepoint.ts e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b packages/webui/third_party/editor/entities/src/encode.ts c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f packages/webui/third_party/editor/entities/src/escape.ts 99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4 packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts 701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts 409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103 packages/webui/third_party/editor/entities/src/generated/encode-html.ts 6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687 packages/webui/third_party/editor/entities/src/index.ts 95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3 packages/webui/third_party/editor/linkify-it/LICENSE b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1 packages/webui/third_party/editor/linkify-it/index.mjs ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8 packages/webui/third_party/editor/linkify-it/lib/re.mjs 492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204 packages/webui/third_party/editor/linkify-it/package.json 792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473 packages/webui/third_party/editor/markdown-it/LICENSE a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b packages/webui/third_party/editor/markdown-it/index.mjs 5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5 packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs 82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs 952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965 packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs 0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs 70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs 840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158 packages/webui/third_party/editor/markdown-it/lib/index.mjs ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4 packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs 67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4 packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs 0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9 packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs 47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2 packages/webui/third_party/editor/markdown-it/lib/renderer.mjs 86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2 packages/webui/third_party/editor/markdown-it/lib/ruler.mjs d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899 packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs 5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968 packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs 4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21 packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs 75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs 2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9 packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482 packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs 1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs 8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6 packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs 3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860 packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs 454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs 52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5 packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs 0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3 packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499 packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs 7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93 packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs 9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs 2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0 packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs 78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5 packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs 8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40 packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs 06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403 packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs 23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1 packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs 37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101 packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs 143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924 packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs 67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4 packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0 packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs 3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs 4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990 packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372 packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089 packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs 63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8 packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f packages/webui/third_party/editor/markdown-it/lib/token.mjs 4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5 packages/webui/third_party/editor/markdown-it/package.json 6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644 packages/webui/third_party/editor/mdurl/LICENSE 8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0 packages/webui/third_party/editor/mdurl/index.mjs d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20 packages/webui/third_party/editor/mdurl/lib/decode.mjs 0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d packages/webui/third_party/editor/mdurl/lib/encode.mjs 2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d packages/webui/third_party/editor/mdurl/lib/format.mjs 2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d packages/webui/third_party/editor/mdurl/lib/parse.mjs 807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d packages/webui/third_party/editor/mdurl/package.json 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/orderedmap/LICENSE eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641 packages/webui/third_party/editor/orderedmap/index.js 282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c packages/webui/third_party/editor/orderedmap/package.json ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-commands/LICENSE 4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79 packages/webui/third_party/editor/prosemirror-commands/package.json 41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc packages/webui/third_party/editor/prosemirror-commands/src/commands.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-history/LICENSE e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22 packages/webui/third_party/editor/prosemirror-history/package.json 146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c packages/webui/third_party/editor/prosemirror-history/src/history.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-inputrules/LICENSE d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9 packages/webui/third_party/editor/prosemirror-inputrules/package.json fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9 packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts 3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2 packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts 17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts 444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-keymap/LICENSE 15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761 packages/webui/third_party/editor/prosemirror-keymap/package.json 9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60 packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-markdown/LICENSE f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494 packages/webui/third_party/editor/prosemirror-markdown/package.json 8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5 packages/webui/third_party/editor/prosemirror-markdown/src/index.ts f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-model/LICENSE b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e packages/webui/third_party/editor/prosemirror-model/package.json 2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174 packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c packages/webui/third_party/editor/prosemirror-model/src/content.ts d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5 packages/webui/third_party/editor/prosemirror-model/src/diff.ts bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af packages/webui/third_party/editor/prosemirror-model/src/fragment.ts b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea packages/webui/third_party/editor/prosemirror-model/src/index.ts 7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057 packages/webui/third_party/editor/prosemirror-model/src/mark.ts 39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2 packages/webui/third_party/editor/prosemirror-model/src/node.ts 4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c packages/webui/third_party/editor/prosemirror-model/src/replace.ts dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596 packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a packages/webui/third_party/editor/prosemirror-model/src/schema.ts b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-schema-list/LICENSE 98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964 packages/webui/third_party/editor/prosemirror-schema-list/package.json fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54 packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-state/LICENSE b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef packages/webui/third_party/editor/prosemirror-state/package.json eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a packages/webui/third_party/editor/prosemirror-state/src/index.ts a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202 packages/webui/third_party/editor/prosemirror-state/src/plugin.ts cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a packages/webui/third_party/editor/prosemirror-state/src/selection.ts 081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44 packages/webui/third_party/editor/prosemirror-state/src/state.ts fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83 packages/webui/third_party/editor/prosemirror-state/src/transaction.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-transform/LICENSE 2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb packages/webui/third_party/editor/prosemirror-transform/package.json 02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts 340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed packages/webui/third_party/editor/prosemirror-transform/src/index.ts ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78 packages/webui/third_party/editor/prosemirror-transform/src/map.ts f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb packages/webui/third_party/editor/prosemirror-transform/src/mark.ts 0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4 packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts 07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1 packages/webui/third_party/editor/prosemirror-transform/src/replace.ts 478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9 packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts 1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac packages/webui/third_party/editor/prosemirror-transform/src/step.ts 0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3 packages/webui/third_party/editor/prosemirror-transform/src/structure.ts ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3 packages/webui/third_party/editor/prosemirror-transform/src/transform.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-view/LICENSE 79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a packages/webui/third_party/editor/prosemirror-view/package.json 753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af packages/webui/third_party/editor/prosemirror-view/src/browser.ts e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705 packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts 4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9 packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a packages/webui/third_party/editor/prosemirror-view/src/decoration.ts 045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af packages/webui/third_party/editor/prosemirror-view/src/dom.ts 6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a packages/webui/third_party/editor/prosemirror-view/src/domchange.ts d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418 packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts 14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200 packages/webui/third_party/editor/prosemirror-view/src/index.ts 58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4 packages/webui/third_party/editor/prosemirror-view/src/input.ts 6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437 packages/webui/third_party/editor/prosemirror-view/src/selection.ts 3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts 1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57 packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb packages/webui/third_party/editor/punycode.js/package.json 6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04 packages/webui/third_party/editor/punycode.js/punycode.js 530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226 packages/webui/third_party/editor/rope-sequence/LICENSE efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624 packages/webui/third_party/editor/rope-sequence/index.js 0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548 packages/webui/third_party/editor/rope-sequence/package.json 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/uc.micro/LICENSE.txt d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8 packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs 0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5 packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs 378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs 53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs 32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325 packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs 4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087 packages/webui/third_party/editor/uc.micro/index.mjs 8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250 packages/webui/third_party/editor/uc.micro/package.json 41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/w3c-keyname/LICENSE b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e packages/webui/third_party/editor/w3c-keyname/index.js 0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b packages/webui/third_party/editor/w3c-keyname/package.json ``` Check a tree against it with `scripts/mosaic queue review verify-commit 154 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca --op OP --by SEAT ```
Member

Dewey review, row 154 round 3: approve

Candidate manifest cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca (195 paths, the same set as r2). Patch r3/candidate.patch (d709b2dd…) applied to a fresh detached worktree of 850484a7d. There were 4 whitespace warnings, all in vendored files as in r2, and sha256sum -c passed on all 195 paths. No base drift: git diff 850484a7d HEAD over the 195 paths is empty at HEAD 1dbf45610.

From r2 to r3, five paths change: editor/model.mjs, editor/BUILD.json, src/public/editor.js, tests/editor-browser.test.mjs and tests/docs-browser.test.mjs. I read the full diff of each except the bundle.

My r2 finding (backslash in a title): fixed

  • Link title. titleBackslash (model.mjs:172) applies oneLine, then doubles every \. The link.close override (:199-202) hands that title to the vendored writer, which adds \ before each ". Doubling first and quoting second can't interact, so x\") <img …> is written "x\\\") <img …> " and end\ is written "end\\". An unchanged title keeps the original mark, so open's autolink test sees the same truthiness.
  • Image title. :193 now escapes [\\"] with '\\$&', which is what I asked for.
  • Probe. I parsed the written lines with markdown-it 14.1.0, html: true, as an html renderer would. It was a scratch probe only, not a test run:
    • the r2 line [word](… "x\\") <img src=x onerror=alert(1)> ") gives title x\ plus an html_inline <img src=x onerror=alert(1)>, confirming the r2 finding;
    • the r3 link and image lines for both shapes give exactly the pasted title (x\") <img src=x onerror=alert(1)> and end\) and no html_inline token.
  • Tests. There are four new ones, editor-browser.test.mjs:477-488: link and image title, each with a quote after a backslash and with a trailing backslash.
    • The written literals match the escaping above, and each test asserts the exact saved string.
    • With reread, a test also mounts a read-only editor on the saved text and asserts that the parsed titles equal [value] and that no <img appears in the document text.
    • The refactor into pasteTest keeps r2's four line-break tests with the same asserts. Only the first assertion's message text changed.

Researcher's run (my check of the logs in r3/)

  • _singles.txt: 32 files, and an awk sum of 206 tests, 206 pass, 0 fail. suite.log has the same 206/206.
  • Seven mutant logs, each 16 tests on editor-browser: an awk sum of 112 tests, 101 pass, 11 fail. Every mutant is killed by the test the table names.
  • The link-backslash log shows the rebuilt mutant writing the r2 shape ("x\\\") … unescaped to "x\\"), "end\")). So that mutant really rebuilt editor.js and was killed by the new exact-string assert, and image-backslash likewise.
  • post-mutant-check.txt: 195 OK. Provenance under MOSAIC_REQUIRE_EDITOR_BUILD=1 after the mutants: 6/6.
  • BUILD.json (the r2 blocker for both of us): fixed. In my worktree the shipped src/public/editor.js is 9c881b13…0fee, 758420 B, and editor/BUILD.json records exactly that sha and byte count.

I didn't run the browser suite myself this round. The run record is Researcher's slot run, checked as above, and Sage's gate covers the suites.

Re-read shortfall: accept, non-blocking

Researcher is right that in the two backslash mutants the exact-string assert throws first, so no log shows the re-read asserts failing alone. The exact-string assert pins the one correct CommonMark output, so it's a sufficient killer by itself.

By the probe above, the r2-shaped output would also fail both re-read asserts: the title reads back as x\ or not at all, and with the editor's html: false the <img …> lands in the document text. I don't need that extra run for landing.

The other r2 points

  • g5 (Filbert). The new test pastes <pre data-params="ab">` and expects a bare fence. Mutant g5-backtick-kept is killed by it.
  • docs-browser.test.mjs:67. The #doc-commit existence check is back, with the same behaviour on the success path.
  • Tilde wording (my ii). BUILD.md:388, :390 and :419 now say that block loads as a raw source block inside the visual editor. Fixed.
  • <img> in an image alt. Left as is, as I accepted in r2.

Non-blocking notes

  • BUILD.md :388 and :419 cite nodeOf at model.mjs:258-266 and the raw-block asserts at editor-browser.test.mjs:464-465. Those are r2 line numbers: in r3 nodeOf starts at :265 and the asserts are at :499. This is packet text only.
  • The titles collector in the re-read pushes once per text node carrying a link mark, so a link split across text nodes would push its title twice. It passes on mix.md as written, so this is only a note for whoever reuses it.
## Dewey review, row 154 round 3: approve Candidate manifest `cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca` (195 paths, the same set as r2). Patch `r3/candidate.patch` (`d709b2dd…`) applied to a fresh detached worktree of `850484a7d`. There were 4 whitespace warnings, all in vendored files as in r2, and `sha256sum -c` passed on all 195 paths. No base drift: `git diff 850484a7d HEAD` over the 195 paths is empty at HEAD 1dbf45610. From r2 to r3, five paths change: `editor/model.mjs`, `editor/BUILD.json`, `src/public/editor.js`, `tests/editor-browser.test.mjs` and `tests/docs-browser.test.mjs`. I read the full diff of each except the bundle. ### My r2 finding (backslash in a title): fixed - **Link title.** `titleBackslash` (`model.mjs:172`) applies `oneLine`, then doubles every `\`. The `link.close` override (`:199-202`) hands that title to the vendored writer, which adds `\` before each `"`. Doubling first and quoting second can't interact, so `x\") <img …> ` is written `"x\\\") <img …> "` and `end\` is written `"end\\"`. An unchanged title keeps the original mark, so `open`'s autolink test sees the same truthiness. - **Image title.** `:193` now escapes `[\\"]` with `'\\$&'`, which is what I asked for. - **Probe.** I parsed the written lines with markdown-it 14.1.0, `html: true`, as an html renderer would. It was a scratch probe only, not a test run: - the r2 line `[word](… "x\\") <img src=x onerror=alert(1)> ")` gives title `x\` plus an `html_inline` `<img src=x onerror=alert(1)>`, confirming the r2 finding; - the r3 link and image lines for both shapes give exactly the pasted title (`x\") <img src=x onerror=alert(1)> ` and `end\`) and no `html_inline` token. - **Tests.** There are four new ones, `editor-browser.test.mjs:477-488`: link and image title, each with a quote after a backslash and with a trailing backslash. - The written literals match the escaping above, and each test asserts the exact saved string. - With `reread`, a test also mounts a read-only editor on the saved text and asserts that the parsed titles equal `[value]` and that no `<img` appears in the document text. - The refactor into `pasteTest` keeps r2's four line-break tests with the same asserts. Only the first assertion's message text changed. ### Researcher's run (my check of the logs in `r3/`) - `_singles.txt`: 32 files, and an awk sum of 206 tests, 206 pass, 0 fail. `suite.log` has the same 206/206. - Seven mutant logs, each 16 tests on editor-browser: an awk sum of 112 tests, 101 pass, 11 fail. Every mutant is killed by the test the table names. - The link-backslash log shows the rebuilt mutant writing the r2 shape (`"x\\\") …` unescaped to `"x\\")`, `"end\")`). So that mutant really rebuilt editor.js and was killed by the new exact-string assert, and image-backslash likewise. - `post-mutant-check.txt`: 195 OK. Provenance under `MOSAIC_REQUIRE_EDITOR_BUILD=1` after the mutants: 6/6. - **BUILD.json (the r2 blocker for both of us): fixed.** In my worktree the shipped `src/public/editor.js` is `9c881b13…0fee`, 758420 B, and `editor/BUILD.json` records exactly that sha and byte count. I didn't run the browser suite myself this round. The run record is Researcher's slot run, checked as above, and Sage's gate covers the suites. ### Re-read shortfall: accept, non-blocking Researcher is right that in the two backslash mutants the exact-string assert throws first, so no log shows the re-read asserts failing alone. The exact-string assert pins the one correct CommonMark output, so it's a sufficient killer by itself. By the probe above, the r2-shaped output would also fail both re-read asserts: the title reads back as `x\` or not at all, and with the editor's `html: false` the `<img …>` lands in the document text. I don't need that extra run for landing. ### The other r2 points - **g5 (Filbert).** The new test pastes `<pre data-params="a`b">` and expects a bare fence. Mutant g5-backtick-kept is killed by it. - **docs-browser.test.mjs:67.** The `#doc-commit` existence check is back, with the same behaviour on the success path. - **Tilde wording (my ii).** BUILD.md:388, :390 and :419 now say that block loads as a raw source block inside the visual editor. Fixed. - **`<img>` in an image alt.** Left as is, as I accepted in r2. ### Non-blocking notes - BUILD.md :388 and :419 cite `nodeOf` at model.mjs:258-266 and the raw-block asserts at editor-browser.test.mjs:464-465. Those are r2 line numbers: in r3 `nodeOf` starts at :265 and the asserts are at :499. This is packet text only. - The `titles` collector in the re-read pushes once per text node carrying a link mark, so a link split across text nodes would push its title twice. It passes on mix.md as written, so this is only a note for whoever reuses it.
Member

Filbert review, row 154 round 3: approve

Candidate manifest cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca (195 paths), r3/candidate.patch (d709b2dd...) applied with --index to 850484a7d. The manifest matched before and after every run. Compared with r2, five paths changed: editor/BUILD.json, editor/model.mjs, src/public/editor.js, tests/docs-browser.test.mjs and tests/editor-browser.test.mjs.

My r2 change is fixed, and so are my non-blocking notes. No new findings.

Change from r2, fixed: BUILD.json records the shipped bundle

  • editor/BUILD.json:6-8 records src/public/editor.js as 9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee, 758420 B. That is the shipped file.
  • I rebuilt with the pinned toolchain (lock eb60a494..., esbuild 0.28.2 binary e1698a3d..., toolchain check rc=0 under MOSAIC_REQUIRE_EDITOR_BUILD=1), both to a scratch --out and in place. In both, editor.js, editor.css (8654ac57..., 4462 B) and BUILD.json are byte for byte the same as the shipped files.
  • editor-provenance.test.mjs passes 6/6 under MOSAIC_REQUIRE_EDITOR_BUILD=1.

r2 notes, checked

  • Title backslashes.
    • model.mjs:172: titleBackslash doubles each backslash before the vendored link writer escapes ", so x\") is written as x\\\") and end\ as end\\.
    • :193: the image title escapes both characters in one pass (/[\\"]/g).
    • editor-browser.test.mjs:481-488 adds four tests. They cover a quote after a backslash then a tag, and a trailing backslash, each for a link title and an image title. Each asserts the exact written string, then re-reads the saved text with a read-only mount (:454-465).
  • g5. :492 pastes <pre data-params="ab">` and requires a bare fence on Save. My g5 is now killed by it.
  • docs-browser.test.mjs:67. The explicit document.querySelector("#doc-commit") check is back, as at :65.
  • Tilde wording. BUILD.md :419 and :464 now say a raw source block (pre.md-raw) inside the visual editor.

Non-blocking note

  • The re-read asserts haven't been shown to fail on their own. BUILD.md :490 says this itself: on every backslash mutant (Researcher's and my g1, g8 and g9) the exact-string assert fails first. I read :454-465, and the re-read checks the right things: the parsed title equals the pasted value, and no <img appears in the text. The exact-string assert already pins each written form, so the tests kill a wrong escape either way. I don't need that extra run.

Ran by me

Slot from sage-0858. The busy check was CLEAR before each step and after the last one. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and MOSAIC_REQUIRE_EDITOR_BUILD=1 was set.

  • Rebuild, 19:09:28Z to 19:09:29Z. Results as above. The shipped files were restored afterwards and the manifest re-matched.
  • Singles, 19:09:35Z to 19:12:48Z.
    • Every packages/webui/tests/*.test.mjs file was run singly: 32 files, 206/206 by awk sum, 0 skipped.
    • That includes editor-browser 16/16, editor-provenance 6/6, editor 5/5 and docs-browser 1/1.
  • Mutants, 19:12:54Z to 19:15:58Z.
    • Both controls (editor-browser.test.mjs, editor.test.mjs) passed first.
    • Each model.mjs mutant was rebuilt into the bundle before its run, and the files were restored after each one.
    • 9 run, 9 killed:
      • g1 (link title not escaped at all): tests 7, 11, 13
      • g2: test 8
      • g3: test 9
      • g4: test 10
      • g5: test 15
      • g6: test 16
      • g7 (docShown never set, bus.js): tests 4, 5, 6
      • g8 (link backslash not doubled): tests 11, 13
      • g9 (image title escapes " only): tests 12, 14

Not mine

Researcher's r3 runs (BUILD.md "Round 3 results"): two byte-identical builds; singles 206/206; suite 206/206; 7 of 7 mutants killed; provenance 6/6 after the mutants; 195 of 195 manifest checks. I read the logs list and the mutant table, and did not rerun their script. My counts agree with theirs.

## Filbert review, row 154 round 3: approve Candidate manifest `cebca5145c899a362e938d36b26168070ad8cc01bfdc0c9f44a68eee07a005ca` (195 paths), `r3/candidate.patch` (`d709b2dd...`) applied with `--index` to `850484a7d`. The manifest matched before and after every run. Compared with r2, five paths changed: `editor/BUILD.json`, `editor/model.mjs`, `src/public/editor.js`, `tests/docs-browser.test.mjs` and `tests/editor-browser.test.mjs`. My r2 change is fixed, and so are my non-blocking notes. No new findings. ### Change from r2, fixed: `BUILD.json` records the shipped bundle - `editor/BUILD.json:6-8` records `src/public/editor.js` as `9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee`, 758420 B. That is the shipped file. - I rebuilt with the pinned toolchain (lock `eb60a494...`, esbuild 0.28.2 binary `e1698a3d...`, toolchain check rc=0 under `MOSAIC_REQUIRE_EDITOR_BUILD=1`), both to a scratch `--out` and in place. In both, `editor.js`, `editor.css` (`8654ac57...`, 4462 B) and `BUILD.json` are byte for byte the same as the shipped files. - `editor-provenance.test.mjs` passes 6/6 under `MOSAIC_REQUIRE_EDITOR_BUILD=1`. ### r2 notes, checked - **Title backslashes.** - `model.mjs:172`: `titleBackslash` doubles each backslash before the vendored link writer escapes `"`, so `x\")` is written as `x\\\")` and `end\` as `end\\`. - `:193`: the image title escapes both characters in one pass (`/[\\"]/g`). - `editor-browser.test.mjs:481-488` adds four tests. They cover a quote after a backslash then a tag, and a trailing backslash, each for a link title and an image title. Each asserts the exact written string, then re-reads the saved text with a read-only mount (`:454-465`). - **g5.** `:492` pastes `<pre data-params="a`b">` and requires a bare fence on Save. My g5 is now killed by it. - **`docs-browser.test.mjs:67`.** The explicit `document.querySelector("#doc-commit")` check is back, as at `:65`. - **Tilde wording.** BUILD.md `:419` and `:464` now say a raw source block (`pre.md-raw`) inside the visual editor. ### Non-blocking note - **The re-read asserts haven't been shown to fail on their own.** BUILD.md `:490` says this itself: on every backslash mutant (Researcher's and my g1, g8 and g9) the exact-string assert fails first. I read `:454-465`, and the re-read checks the right things: the parsed title equals the pasted value, and no `<img` appears in the text. The exact-string assert already pins each written form, so the tests kill a wrong escape either way. I don't need that extra run. ### Ran by me Slot from sage-0858. The busy check was CLEAR before each step and after the last one. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and `MOSAIC_REQUIRE_EDITOR_BUILD=1` was set. - **Rebuild, 19:09:28Z to 19:09:29Z.** Results as above. The shipped files were restored afterwards and the manifest re-matched. - **Singles, 19:09:35Z to 19:12:48Z.** - Every `packages/webui/tests/*.test.mjs` file was run singly: 32 files, 206/206 by awk sum, 0 skipped. - That includes editor-browser 16/16, editor-provenance 6/6, editor 5/5 and docs-browser 1/1. - **Mutants, 19:12:54Z to 19:15:58Z.** - Both controls (`editor-browser.test.mjs`, `editor.test.mjs`) passed first. - Each `model.mjs` mutant was rebuilt into the bundle before its run, and the files were restored after each one. - 9 run, 9 killed: - g1 (link title not escaped at all): tests 7, 11, 13 - g2: test 8 - g3: test 9 - g4: test 10 - g5: test 15 - g6: test 16 - g7 (`docShown` never set, `bus.js`): tests 4, 5, 6 - g8 (link backslash not doubled): tests 11, 13 - g9 (image title escapes `"` only): tests 12, 14 ### Not mine Researcher's r3 runs (BUILD.md "Round 3 results"): two byte-identical builds; singles 206/206; suite 206/206; 7 of 7 mutants killed; provenance 6/6 after the mutants; 195 of 195 manifest checks. I read the logs list and the mutant table, and did not rerun their script. My counts agree with theirs.
Author
Contributor

Review request for queue row 154, round 5: A WYSIWYG Console editor built from reviewable source (Q168)

  • Owner: researcher
  • Reviewers: dewey, filbert
  • Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage)
  • Brief: docs/plans/2026-10-16_q168-wysiwyg-editor.md § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04
  • Candidate: manifest 3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05

The manifest:

b6871c51ebac822e87a8a580a7721e660033fe94f1b7507cb46fedc1fc90a7be  docs/TOOLS.md
af97b4b13b5b41e1d65d017fb94a137b485d7ace83da1068977f14f63ff4b7fb  packages/webui/README.md
c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f  packages/webui/editor/BUILD.json
fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd  packages/webui/editor/build.mjs
3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24  packages/webui/editor/editor.css
f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56  packages/webui/editor/entry.mjs
8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79  packages/webui/editor/model.mjs
efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9  packages/webui/editor/toolchain.mjs
737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829  packages/webui/editor/view.mjs
eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f  packages/webui/package-lock.json
0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c  packages/webui/package.json
861ed7de7581536c7e8f46f3866ebda66afb7d8e3537d61e15b7fb336df20361  packages/webui/src/public/bus.js
8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f  packages/webui/src/public/editor.css
9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee  packages/webui/src/public/editor.js
c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c  packages/webui/src/public/index.html
02e9d4fd0657b3fc08a03a7354a1e9a6bf4b4bfd9735c64cea52800b85c24e08  packages/webui/src/serve.mjs
de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f  packages/webui/tests/browser.test.mjs
a2dd88810a160a0681e1dac72c4cc0f98a7ac09b445fc38a55d1503d880110d6  packages/webui/tests/docs-browser.test.mjs
40fa1214b605f4b196955da28f26a8f8f0bbac373fc90d27cbc7010d675df01c  packages/webui/tests/editor-browser.test.mjs
f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461  packages/webui/tests/editor-provenance.test.mjs
d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12  packages/webui/tests/editor.test.mjs
d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1  packages/webui/tests/helpers/editor-bundle.mjs
552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b  packages/webui/tests/helpers/every-element.mjs
7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e  packages/webui/tests/serve.test.mjs
2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7  packages/webui/third_party/editor/NOTICE
d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d  packages/webui/third_party/editor/PROVENANCE.json
cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164  packages/webui/third_party/editor/entities/LICENSE
c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c  packages/webui/third_party/editor/entities/package.json
38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94  packages/webui/third_party/editor/entities/src/decode.ts
7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c  packages/webui/third_party/editor/entities/src/decode_codepoint.ts
e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b  packages/webui/third_party/editor/entities/src/encode.ts
c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f  packages/webui/third_party/editor/entities/src/escape.ts
99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4  packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts
701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b  packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts
409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103  packages/webui/third_party/editor/entities/src/generated/encode-html.ts
6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687  packages/webui/third_party/editor/entities/src/index.ts
95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3  packages/webui/third_party/editor/linkify-it/LICENSE
b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1  packages/webui/third_party/editor/linkify-it/index.mjs
ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8  packages/webui/third_party/editor/linkify-it/lib/re.mjs
492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204  packages/webui/third_party/editor/linkify-it/package.json
792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473  packages/webui/third_party/editor/markdown-it/LICENSE
a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b  packages/webui/third_party/editor/markdown-it/index.mjs
5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5  packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs
82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc  packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs
952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe  packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs
c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965  packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs
0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs
70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs
c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c  packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs
840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158  packages/webui/third_party/editor/markdown-it/lib/index.mjs
ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4  packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs
d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec  packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs
67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4  packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs
0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee  packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs
f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9  packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs
d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f  packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs
47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2  packages/webui/third_party/editor/markdown-it/lib/renderer.mjs
86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2  packages/webui/third_party/editor/markdown-it/lib/ruler.mjs
d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899  packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs
5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968  packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs
4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21  packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs
75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c  packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs
2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9  packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs
d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b  packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs
ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482  packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs
1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f  packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs
be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a  packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs
8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6  packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs
3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860  packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs
454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca  packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs
52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5  packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs
0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3  packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs
e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499  packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs
7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93  packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs
9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a  packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs
2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee  packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs
eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0  packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs
d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce  packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs
78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5  packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs
8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40  packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs
06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403  packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs
23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1  packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs
37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101  packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs
f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf  packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs
143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c  packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs
f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924  packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs
67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4  packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs
a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0  packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs
3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e  packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs
4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990  packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs
f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372  packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs
cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089  packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs
63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8  packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs
c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f  packages/webui/third_party/editor/markdown-it/lib/token.mjs
4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5  packages/webui/third_party/editor/markdown-it/package.json
6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644  packages/webui/third_party/editor/mdurl/LICENSE
8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0  packages/webui/third_party/editor/mdurl/index.mjs
d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20  packages/webui/third_party/editor/mdurl/lib/decode.mjs
0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d  packages/webui/third_party/editor/mdurl/lib/encode.mjs
2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d  packages/webui/third_party/editor/mdurl/lib/format.mjs
2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d  packages/webui/third_party/editor/mdurl/lib/parse.mjs
807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d  packages/webui/third_party/editor/mdurl/package.json
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/orderedmap/LICENSE
eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641  packages/webui/third_party/editor/orderedmap/index.js
282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c  packages/webui/third_party/editor/orderedmap/package.json
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-commands/LICENSE
4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79  packages/webui/third_party/editor/prosemirror-commands/package.json
41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc  packages/webui/third_party/editor/prosemirror-commands/src/commands.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-history/LICENSE
e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22  packages/webui/third_party/editor/prosemirror-history/package.json
146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c  packages/webui/third_party/editor/prosemirror-history/src/history.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-inputrules/LICENSE
d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9  packages/webui/third_party/editor/prosemirror-inputrules/package.json
fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9  packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts
3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2  packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts
17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed  packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts
444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd  packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-keymap/LICENSE
15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761  packages/webui/third_party/editor/prosemirror-keymap/package.json
9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60  packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-markdown/LICENSE
f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494  packages/webui/third_party/editor/prosemirror-markdown/package.json
8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d  packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts
f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5  packages/webui/third_party/editor/prosemirror-markdown/src/index.ts
f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece  packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts
fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb  packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-model/LICENSE
b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e  packages/webui/third_party/editor/prosemirror-model/package.json
2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174  packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts
a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c  packages/webui/third_party/editor/prosemirror-model/src/content.ts
d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5  packages/webui/third_party/editor/prosemirror-model/src/diff.ts
bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af  packages/webui/third_party/editor/prosemirror-model/src/fragment.ts
b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb  packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts
d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea  packages/webui/third_party/editor/prosemirror-model/src/index.ts
7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057  packages/webui/third_party/editor/prosemirror-model/src/mark.ts
39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2  packages/webui/third_party/editor/prosemirror-model/src/node.ts
4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c  packages/webui/third_party/editor/prosemirror-model/src/replace.ts
dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596  packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts
ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a  packages/webui/third_party/editor/prosemirror-model/src/schema.ts
b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f  packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-schema-list/LICENSE
98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964  packages/webui/third_party/editor/prosemirror-schema-list/package.json
fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54  packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-state/LICENSE
b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef  packages/webui/third_party/editor/prosemirror-state/package.json
eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a  packages/webui/third_party/editor/prosemirror-state/src/index.ts
a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202  packages/webui/third_party/editor/prosemirror-state/src/plugin.ts
cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a  packages/webui/third_party/editor/prosemirror-state/src/selection.ts
081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44  packages/webui/third_party/editor/prosemirror-state/src/state.ts
fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83  packages/webui/third_party/editor/prosemirror-state/src/transaction.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-transform/LICENSE
2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb  packages/webui/third_party/editor/prosemirror-transform/package.json
02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d  packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts
340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed  packages/webui/third_party/editor/prosemirror-transform/src/index.ts
ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78  packages/webui/third_party/editor/prosemirror-transform/src/map.ts
f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb  packages/webui/third_party/editor/prosemirror-transform/src/mark.ts
0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4  packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts
07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1  packages/webui/third_party/editor/prosemirror-transform/src/replace.ts
478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9  packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts
1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac  packages/webui/third_party/editor/prosemirror-transform/src/step.ts
0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3  packages/webui/third_party/editor/prosemirror-transform/src/structure.ts
ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3  packages/webui/third_party/editor/prosemirror-transform/src/transform.ts
ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8  packages/webui/third_party/editor/prosemirror-view/LICENSE
79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a  packages/webui/third_party/editor/prosemirror-view/package.json
753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af  packages/webui/third_party/editor/prosemirror-view/src/browser.ts
e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705  packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts
4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9  packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts
a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a  packages/webui/third_party/editor/prosemirror-view/src/decoration.ts
045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af  packages/webui/third_party/editor/prosemirror-view/src/dom.ts
6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a  packages/webui/third_party/editor/prosemirror-view/src/domchange.ts
d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418  packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts
ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb  packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts
14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200  packages/webui/third_party/editor/prosemirror-view/src/index.ts
58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4  packages/webui/third_party/editor/prosemirror-view/src/input.ts
6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437  packages/webui/third_party/editor/prosemirror-view/src/selection.ts
3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f  packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts
1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57  packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt
e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb  packages/webui/third_party/editor/punycode.js/package.json
6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04  packages/webui/third_party/editor/punycode.js/punycode.js
530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226  packages/webui/third_party/editor/rope-sequence/LICENSE
efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624  packages/webui/third_party/editor/rope-sequence/index.js
0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548  packages/webui/third_party/editor/rope-sequence/package.json
483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a  packages/webui/third_party/editor/uc.micro/LICENSE.txt
d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8  packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs
0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5  packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs
378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f  packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs
53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e  packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs
32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325  packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs
4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087  packages/webui/third_party/editor/uc.micro/index.mjs
8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250  packages/webui/third_party/editor/uc.micro/package.json
41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc  packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs
869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884  packages/webui/third_party/editor/w3c-keyname/LICENSE
b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e  packages/webui/third_party/editor/w3c-keyname/index.js
0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b  packages/webui/third_party/editor/w3c-keyname/package.json

Check a tree against it with scripts/mosaic queue review verify-commit 154 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate 3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05 --op OP --by SEAT
<!-- mosaic-queue-op: sage-154-r5-req --> <!-- mosaic-queue-round: row=154 round=5 candidate=3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05 --> Review request for queue row 154, round 5: A WYSIWYG Console editor built from reviewable source (Q168) - Owner: researcher - Reviewers: dewey, filbert - Gate: Mos's decision 123 go on the license and candidate before any code is imported, and later on the public/ diff; Dewey and Filbert approve naming the candidate manifest; webui, bus, cli, project suites and every scripts/test-*.sh green. Needs row 148 done. (sage) - Brief: `docs/plans/2026-10-16_q168-wysiwyg-editor.md` § A WYSIWYG Console editor built from reviewable source @4dd89bb60b04 - Candidate: manifest `3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05` The manifest: ```text b6871c51ebac822e87a8a580a7721e660033fe94f1b7507cb46fedc1fc90a7be docs/TOOLS.md af97b4b13b5b41e1d65d017fb94a137b485d7ace83da1068977f14f63ff4b7fb packages/webui/README.md c60f2e353172bb0e3aa1cfe7be081f49898602af8ca0294fef2dabb8112b942f packages/webui/editor/BUILD.json fe046f0f935c528c9f0a65d589c4401a43ac49ddfa6cf6543814c280d5b619bd packages/webui/editor/build.mjs 3a4931e7fa7d74633a1cbcce31cb202beea40bbcb95ba8dd28a26313bd3d7e24 packages/webui/editor/editor.css f780c327fab8cde6ef922669959ac2802691cd405d3c0911faf97d7fbe2e7d56 packages/webui/editor/entry.mjs 8596c60ac4b5a8885e02853ef378743eb0bc4c9bbb00ce8a72016e4453b32a79 packages/webui/editor/model.mjs efc5dd177e1890f5d76c2cf631a9a720c45398a501c52e0d178e5882da77c3c9 packages/webui/editor/toolchain.mjs 737a37696aee31d46a9091119fce294ec7562ff50a54585ec381e1d217132829 packages/webui/editor/view.mjs eb60a4945282a5eae49a03a27cc4a1eb67954e73d57b8ef945073ed5c184f63f packages/webui/package-lock.json 0bb346f598380c2bcdb39db92a006959442d3ce5dc645503ef76405aae53311c packages/webui/package.json 861ed7de7581536c7e8f46f3866ebda66afb7d8e3537d61e15b7fb336df20361 packages/webui/src/public/bus.js 8654ac57d1e7a561110138ecd7f701c34a074017ff8c4cd2768d8083908ee61f packages/webui/src/public/editor.css 9c881b13740fae2408717ad75fa1d85bfcfe3fa8b3af0f1b3f2e706c90e80fee packages/webui/src/public/editor.js c336f00436d9d9c36e8a15a57d2b91f6a7084748c816c40f144000e7c23f410c packages/webui/src/public/index.html 02e9d4fd0657b3fc08a03a7354a1e9a6bf4b4bfd9735c64cea52800b85c24e08 packages/webui/src/serve.mjs de0e57324b4c6f6651ed95df855893f86a4d6a9930c705b9754164163857df6f packages/webui/tests/browser.test.mjs a2dd88810a160a0681e1dac72c4cc0f98a7ac09b445fc38a55d1503d880110d6 packages/webui/tests/docs-browser.test.mjs 40fa1214b605f4b196955da28f26a8f8f0bbac373fc90d27cbc7010d675df01c packages/webui/tests/editor-browser.test.mjs f18fc2d30025a5402b6b044d2d8630fec4690da5fcd3a01b6fd5f1f3d3661461 packages/webui/tests/editor-provenance.test.mjs d12ecf293a6dcf55ce24af87c09ca8641b9b698ff52ce1095376f3cea989ec12 packages/webui/tests/editor.test.mjs d32b86d10998aa6d863c74e1c1054ce1d3a9a21770860eca602538e77394a7e1 packages/webui/tests/helpers/editor-bundle.mjs 552dadb0614bcbb720c1fc4af09cd8a7e760bf987709efe3e3f47524e4af124b packages/webui/tests/helpers/every-element.mjs 7674edf5aa05f374a74cf6f99628b041a7f91983a71fb615c74fc48dd4745a0e packages/webui/tests/serve.test.mjs 2f687a0fd1ea83ce3935b8a06db2aa8a21cb33feb95c22a7b12f8d38e504d6a7 packages/webui/third_party/editor/NOTICE d0e600f0d649b3cb303172608f5daee72d60214bdbcb9d6a2c9dd8afbf578c5d packages/webui/third_party/editor/PROVENANCE.json cb992345949ccd6e8394b2cd6c465f7b897c864f845937dbf64e8997f389e164 packages/webui/third_party/editor/entities/LICENSE c92f657f679669a91bc32cd98f0b4812b3f4a9c6f3b3af3022a70cb25b7efc7c packages/webui/third_party/editor/entities/package.json 38a42d441b67aa4f6397a2edbc57a2845110f2f64c18c56c931f1ac55179be94 packages/webui/third_party/editor/entities/src/decode.ts 7467c31bd84fed848ee0b1b7b4ec100ffe387fb2802ef0fa66307744a45f331c packages/webui/third_party/editor/entities/src/decode_codepoint.ts e40bad527b5c9a1d5b9e0e7d0b8643328cb4d9e1b2d79777a367b81bcec3e09b packages/webui/third_party/editor/entities/src/encode.ts c062e448b06654fa3c99a04e89bc53bc4463bf5e5cf65ac711f372a77e22639f packages/webui/third_party/editor/entities/src/escape.ts 99bd4f1a69db8431bf58444e6c38a8b60f2a1820e1ce5781c851c1914a8822c4 packages/webui/third_party/editor/entities/src/generated/decode-data-html.ts 701497193dd355232513b7e4a7c6fea4d856eb33d5116c61cda4d59028d4790b packages/webui/third_party/editor/entities/src/generated/decode-data-xml.ts 409c7a156de66f45037fa684afaa6147f98d8860274ef0218f02a16c993cb103 packages/webui/third_party/editor/entities/src/generated/encode-html.ts 6487bfc6a09ad4211e1264ccd7d21fbce19bfcfd06eba8b83cb80537f0109687 packages/webui/third_party/editor/entities/src/index.ts 95e3f7f0e81e9b4940cdfaa1956aaff5e4dfd2fb1565041e7c78eb9a606f23e3 packages/webui/third_party/editor/linkify-it/LICENSE b7cdca31306ba9d92b963134333e9ec71df74bd9d8a2c649e0e2f6c7468d92b1 packages/webui/third_party/editor/linkify-it/index.mjs ce32a3968ede95c9fe29fe505fec5c19ab0bb7f8eb5d7666ab3180910adc9cf8 packages/webui/third_party/editor/linkify-it/lib/re.mjs 492ffef383ead25ddc4a7615129c3c41eafe1a0a10172680a93fbb5039c84204 packages/webui/third_party/editor/linkify-it/package.json 792c48c5a849a15fdf9e37e8bcf9e6d1dd13b32b46c642a748a0a46a9919d473 packages/webui/third_party/editor/markdown-it/LICENSE a112fad9f779e8e4d58a76586ec54b5b9fe134d92a670a96749bcb676be2c62b packages/webui/third_party/editor/markdown-it/index.mjs 5bbdf4ab71bd31461b29d47da1077c600ba941c3e53d74f8d50ce31ac45546a5 packages/webui/third_party/editor/markdown-it/lib/common/html_blocks.mjs 82021df92c9f3f856cd1bb59454c2033c50a0617a748acc150bbdacb8101abcc packages/webui/third_party/editor/markdown-it/lib/common/html_re.mjs 952160caa972e1d2e291dc284d8531f835b9eb7628c1e806c9cf95351c55afbe packages/webui/third_party/editor/markdown-it/lib/common/utils.mjs c5a73b8f46eaa0f027f06a309a362f885ec4467c99a581d798cbb6a3bac14965 packages/webui/third_party/editor/markdown-it/lib/helpers/index.mjs 0426a1489ec76c3e10c8b36bf5a286e97cca90a800e4e24a98b314835b790c1c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_destination.mjs 70129adaa86dfd0f99e05971c51f865a3956775c045ccdc2ec8f2f2e0c0893aa packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_label.mjs c10fc0bd89f11eb982a865dcf525cf6f3bec328958bb4de752e3993b44eb9c7c packages/webui/third_party/editor/markdown-it/lib/helpers/parse_link_title.mjs 840746264c1655558e80752c663d745e4336e806978f74d4c678c5e21bab5158 packages/webui/third_party/editor/markdown-it/lib/index.mjs ba9fe86713007b6c04e4381fc15500936ce3852eeaefe819350fa1a42eb10bd4 packages/webui/third_party/editor/markdown-it/lib/parser_block.mjs d6789a1f7ef8ad05a64114b873ca18b4b5c8245fee02d2d7559a20bba93858ec packages/webui/third_party/editor/markdown-it/lib/parser_core.mjs 67ed63ad6efecc6f03bf1dc40f01a0abec7c0e675053b7503847bd4b287f72e4 packages/webui/third_party/editor/markdown-it/lib/parser_inline.mjs 0287ae7e457b4a18f049aa81a7ca39bbc543eb2e9b95718476a8fb16dc299eee packages/webui/third_party/editor/markdown-it/lib/presets/commonmark.mjs f8b577995fcde6bd0fcb96524eb32a872d9e82874921956fda81477913a94cc9 packages/webui/third_party/editor/markdown-it/lib/presets/default.mjs d88083cd3b6a87566b63950c99a810fa3228345a41cb1fe441f2d8139bb9e60f packages/webui/third_party/editor/markdown-it/lib/presets/zero.mjs 47750faf7a1f9dab8d3e984ee4c6a799c195130ff141c9cb1a98e13d7bf70cc2 packages/webui/third_party/editor/markdown-it/lib/renderer.mjs 86b94f2a50df56a51ef6ee8bdfb23a6733e83a1efa2f58b3b166aebae84a7ce2 packages/webui/third_party/editor/markdown-it/lib/ruler.mjs d88eaf1c88489376a825e9de09031d17b6cf442ae5f420acce3619df94f5c899 packages/webui/third_party/editor/markdown-it/lib/rules_block/blockquote.mjs 5b5aad3b00bf175f55849ae44974944fc26a45d416440f3710d11c6213f49968 packages/webui/third_party/editor/markdown-it/lib/rules_block/code.mjs 4434e2f70150df1490bd11eeea8bd20fe763f029c22fc21305b6376f068cfd21 packages/webui/third_party/editor/markdown-it/lib/rules_block/fence.mjs 75e812fc9938775e55d7c4e840a856e557ef0f4a2ab27aec535d25c78c6e8d7c packages/webui/third_party/editor/markdown-it/lib/rules_block/heading.mjs 2d786cf899247071a305d4fefcb3d41de707e31982997ebf134672497f20edc9 packages/webui/third_party/editor/markdown-it/lib/rules_block/hr.mjs d8e20eca3742fb8e5d3eae238de1afa962104d772df6dbccad604325940ca86b packages/webui/third_party/editor/markdown-it/lib/rules_block/html_block.mjs ae83782c9a5bbcb69f3127a4541c1e27e6a46be86d4955bf840c5cd1a289a482 packages/webui/third_party/editor/markdown-it/lib/rules_block/lheading.mjs 1f569f81b61a73094ea7c70a30b2d6d3577de26de2d55d5f8b9146027f2f8a5f packages/webui/third_party/editor/markdown-it/lib/rules_block/list.mjs be9534ba8fa1312ae6ab6e6ecd6e96173a5a3dd35e924b7751782675bb15dc9a packages/webui/third_party/editor/markdown-it/lib/rules_block/paragraph.mjs 8884a101e95de67d72b1fd3dfe3341bf52876132398d72a528481f662e0eecb6 packages/webui/third_party/editor/markdown-it/lib/rules_block/reference.mjs 3f26d52f4fa67c5fa5f85346acf18f4139419b5dc8496056dd6050bd3a266860 packages/webui/third_party/editor/markdown-it/lib/rules_block/state_block.mjs 454553ff462fc68e353dad0f7b04ba1da46ee18acf88047dde8faf1873d64bca packages/webui/third_party/editor/markdown-it/lib/rules_block/table.mjs 52ef23be5d9248275a5c0ff8b43602540bd3ed8a69bc63fbdc262b09c5de69b5 packages/webui/third_party/editor/markdown-it/lib/rules_core/block.mjs 0da70e72022dda01deaf6630a772a9c4798b6b6dc1d37144520b872d302b12a3 packages/webui/third_party/editor/markdown-it/lib/rules_core/inline.mjs e68ac3597363b13a7451e65d9a7943ce99f4b57e9509eb62eebb1a3162423499 packages/webui/third_party/editor/markdown-it/lib/rules_core/linkify.mjs 7f7fab952ebe0a0c16016835e1af0bf682af6e2eb5a28454eb350c28332cfa93 packages/webui/third_party/editor/markdown-it/lib/rules_core/normalize.mjs 9b3211580c89951bad60aa4550f76ebf2d2b81cc4523849ed34e6b85ed25ba3a packages/webui/third_party/editor/markdown-it/lib/rules_core/replacements.mjs 2d92309d2a0517b7ac74ba6780333996ff3bf0763e28464916f04befdddb4dee packages/webui/third_party/editor/markdown-it/lib/rules_core/smartquotes.mjs eb68c945733124231b5dc98d480854393b99fc069fd95703f4c36d310572e4f0 packages/webui/third_party/editor/markdown-it/lib/rules_core/state_core.mjs d61f0f19e2e49b565564a1537c46828c18da453516226d1637816021d4d68fce packages/webui/third_party/editor/markdown-it/lib/rules_core/text_join.mjs 78599ff3df236375e29dc63f04ad93ae1bb4744d7c47021b93104462cbfc61c5 packages/webui/third_party/editor/markdown-it/lib/rules_inline/autolink.mjs 8baed32815f895f72b0a01255c3180ba2e72fcffb51fbea7677ccf128dafbc40 packages/webui/third_party/editor/markdown-it/lib/rules_inline/backticks.mjs 06769d0aa4e5af875e504dea82db9bc726b463911e7b1c17f732098be95ad403 packages/webui/third_party/editor/markdown-it/lib/rules_inline/balance_pairs.mjs 23e1dbd2fdb408e257f2bbccccae1b1ee8a068db1c43a38b4edd9db76c2f40a1 packages/webui/third_party/editor/markdown-it/lib/rules_inline/emphasis.mjs 37c2420b56e055ff150c13485a2322914974b0364a8d3823c3ef81318196c101 packages/webui/third_party/editor/markdown-it/lib/rules_inline/entity.mjs f498e10cc6318f2a2856e51217e6c0f0a837b18dd920162d2cd6e49789b15adf packages/webui/third_party/editor/markdown-it/lib/rules_inline/escape.mjs 143e477737ce7565af95a6c5dbb854667a07d45e7f3e1b849fb68ba39937014c packages/webui/third_party/editor/markdown-it/lib/rules_inline/fragments_join.mjs f7bee2bd14c158e0178ef409ea84a5d330672094265fbd112673d23a75ff1924 packages/webui/third_party/editor/markdown-it/lib/rules_inline/html_inline.mjs 67e1ad7ba6ce1a2ee0dfaee83653fec3f3e602f8d8841c4b8426c770b03870b4 packages/webui/third_party/editor/markdown-it/lib/rules_inline/image.mjs a805f4cc75ad14b8b7838d408b703a9e26401badfd00a39a80a21e10a3af5cd0 packages/webui/third_party/editor/markdown-it/lib/rules_inline/link.mjs 3a55e9a5fa81bd7b924d4f7469452a7fa6ba999f5204ff076a64f5dc8477348e packages/webui/third_party/editor/markdown-it/lib/rules_inline/linkify.mjs 4c51181f46d59ce1d40dfdec014d1eb69937de850eacfdd4fcb759f9f141e990 packages/webui/third_party/editor/markdown-it/lib/rules_inline/newline.mjs f4b30bd182fea54a661528d6a031c2cdcb06c688a00fb5598c39cf8ae9554372 packages/webui/third_party/editor/markdown-it/lib/rules_inline/state_inline.mjs cf130f8d2405731b5a2ed687ad7b4571baf9dbc3f98a472629c6553c1c6cb089 packages/webui/third_party/editor/markdown-it/lib/rules_inline/strikethrough.mjs 63aca7fc12c4e44bbe8edb6b8cf38c8bf01e3aa1ef5dd0feef82aae930b1d0e8 packages/webui/third_party/editor/markdown-it/lib/rules_inline/text.mjs c6ebce7f456a6fef97e3cf2cd411418a80eb15ef469d7a7ea12405191cd5705f packages/webui/third_party/editor/markdown-it/lib/token.mjs 4e47c64787bcfe32c7a8bebc922e03cc5d007f389fc0f8c61199ab76bf7287e5 packages/webui/third_party/editor/markdown-it/package.json 6b6a356c4337e2446841f30f3cdf7e7023af8c5260b5e347c0f987b9f6aa2644 packages/webui/third_party/editor/mdurl/LICENSE 8ea430f1f8a107f529e2dac519d2f18e71ec9befe6f23f78bf6510cf86d3f9a0 packages/webui/third_party/editor/mdurl/index.mjs d91544cfb42b9639073f5fa0f576bf72ef6697e848005357c433cad036c2ef20 packages/webui/third_party/editor/mdurl/lib/decode.mjs 0ae621933b548f880404841b251b0f4fc2c8446ded699e6812def217250ac15d packages/webui/third_party/editor/mdurl/lib/encode.mjs 2410ec324b913a42c572e01ae49436e5fa4e2e5fbea15c08c92a6dea8bc5887d packages/webui/third_party/editor/mdurl/lib/format.mjs 2a417b42e9ea8ee94fc77c596a34eb206d6c69823484e89d80bf1e7583d8f91d packages/webui/third_party/editor/mdurl/lib/parse.mjs 807e00f99605ba97f4953f8ceb6a65db877d23a9f5496ae367eb953c0e4e627d packages/webui/third_party/editor/mdurl/package.json 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/orderedmap/LICENSE eb0160f63616895337d3b99b8e445d07327ef283f6b525dbcdce7f11efc7a641 packages/webui/third_party/editor/orderedmap/index.js 282ea598284094608736ed5a75f4e0b48da53b851b62bba22362feac507d5c6c packages/webui/third_party/editor/orderedmap/package.json ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-commands/LICENSE 4cef535a05c932ce887caa9fd6a6af08c1b4eb0ec0b30f7f7d81cb7ef3d32e79 packages/webui/third_party/editor/prosemirror-commands/package.json 41ea89670248c1b68a7120c1304d1491b37e7ed7c02ee36002fed08f3a411dfc packages/webui/third_party/editor/prosemirror-commands/src/commands.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-history/LICENSE e6119f791faa9f4b162b7fe5fd6a5a5a42ffbd7070a682db922787e4cbd6df22 packages/webui/third_party/editor/prosemirror-history/package.json 146298d448b0290b6e978ff579a9e159414789d6d37ee9e2bfe7c41e1d45f50c packages/webui/third_party/editor/prosemirror-history/src/history.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-inputrules/LICENSE d6609dcfd99fe0dbcf0dcb9121693337b2ded4b4d20ee5255b797277ca59f8c9 packages/webui/third_party/editor/prosemirror-inputrules/package.json fcf2d6220de0ad68e71a28591d1aafdb776707a551e0e30de5f1b1a772eabbe9 packages/webui/third_party/editor/prosemirror-inputrules/src/index.ts 3a551544aa4c81843d0120936f1bee96fa553b1d90ed2ac429688024bf1a21d2 packages/webui/third_party/editor/prosemirror-inputrules/src/inputrules.ts 17eab940d68292553eda7fb3ec665f2fb5c1e2c18402115e8bc9931aa97b1bed packages/webui/third_party/editor/prosemirror-inputrules/src/rulebuilders.ts 444a4f1ea383a140708f2a22730568fed590ae4a749581dc2a20937471bb75dd packages/webui/third_party/editor/prosemirror-inputrules/src/rules.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-keymap/LICENSE 15652f722a20aa5a7db8a8ae5a1326e56435f6651c67cf8a594c2c826eada761 packages/webui/third_party/editor/prosemirror-keymap/package.json 9d27d674fd56226ce0deb5ba367873872375296d6088783191c039206ea92b60 packages/webui/third_party/editor/prosemirror-keymap/src/keymap.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-markdown/LICENSE f0cbcc04e45defa3e2533ce02e39f06212814b9c17cdccf4e98fd1142e1be494 packages/webui/third_party/editor/prosemirror-markdown/package.json 8f021766089ae38beb47892a8526eb78453cbfc48ee5537ea15bef230cd8283d packages/webui/third_party/editor/prosemirror-markdown/src/from_markdown.ts f0dcc085537da271aa3bc4969576bbd5f03d9982f35807386fdf9b12af7d0aa5 packages/webui/third_party/editor/prosemirror-markdown/src/index.ts f2559c4d6b14e3a322078f0fdf653f3c8a98ccbd28ec5c9c19eff7be63a6eece packages/webui/third_party/editor/prosemirror-markdown/src/schema.ts fa394f5f51ae8834c78cff106faa9892a0f12a2c265a4bde095861f2a7d207eb packages/webui/third_party/editor/prosemirror-markdown/src/to_markdown.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-model/LICENSE b9357f3e9f19800fa43e91e70cf62e63e7f181c1acd607c7cf2aac8de212877e packages/webui/third_party/editor/prosemirror-model/package.json 2ea58a7903bd66ce21a7d313f1af3f0674f240e7a207622d6fc1d64b16a7e174 packages/webui/third_party/editor/prosemirror-model/src/comparedeep.ts a07fd75d13dd2765526589fd31fdd0307037e6e27dfece91301ca371d3b5fe0c packages/webui/third_party/editor/prosemirror-model/src/content.ts d1f2c1bc168e0fb891a519ab0daa7e136bd43b7f8a25d50d1cdbed45fe3d6cd5 packages/webui/third_party/editor/prosemirror-model/src/diff.ts bb9d6b507b084093de4efbe3066dd47b14afe32a41e4390af4aacbe8d98058af packages/webui/third_party/editor/prosemirror-model/src/fragment.ts b4f5e77c9dd4f430002b83fae8e1d114d9653e16ef4b28fba5ea01eb52980abb packages/webui/third_party/editor/prosemirror-model/src/from_dom.ts d6bd6dfd331f27a8b7ca6554ed4833c4983a6cb1cd6332d1c576c0529df386ea packages/webui/third_party/editor/prosemirror-model/src/index.ts 7ba7a7ba2f1861ae15cd894afa80e5211b59e2117bf4568af0b5cc9cd8e18057 packages/webui/third_party/editor/prosemirror-model/src/mark.ts 39defcbeff65f8de187e61d956a1b5b1080962eda32bb875ac1d1e025c31f0d2 packages/webui/third_party/editor/prosemirror-model/src/node.ts 4f2fbf315fba1e70b7802f7c7f5e3478848c5f57f025c2b2169b680153f18b2c packages/webui/third_party/editor/prosemirror-model/src/replace.ts dcef2f457569f8c9daf9c33012470a3446d7b42b1c7aecc9b79d025679fcf596 packages/webui/third_party/editor/prosemirror-model/src/resolvedpos.ts ca0b19ac52487b2d8e75a3ee8321e02ecc5b24397218ca9606bd7b6648c22f7a packages/webui/third_party/editor/prosemirror-model/src/schema.ts b7b3ee52fd9218c3fcaf45a873aa769a3ec28e539715ec1162a545fbd4c8981f packages/webui/third_party/editor/prosemirror-model/src/to_dom.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-schema-list/LICENSE 98d90d8f6748a87c4948f518b14a453f00e9f4e1dd507744786a3e0614953964 packages/webui/third_party/editor/prosemirror-schema-list/package.json fc816321f12d8b9ebbaecfaacd9c48807e3ef0af4f95cc536e30b8cd5df44d54 packages/webui/third_party/editor/prosemirror-schema-list/src/schema-list.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-state/LICENSE b40080e3d2ebfaab5a6ee44b3b2cb20761d79cbe514411df8641a8434d2b65ef packages/webui/third_party/editor/prosemirror-state/package.json eb9e85c66caac02f0140ca3686efd10cd117d64eda4d9054bc8c3e4622055d6a packages/webui/third_party/editor/prosemirror-state/src/index.ts a0bac3d5db226ed673774b0b6b58d43e36d13f34b9ecee874d081dc3145e2202 packages/webui/third_party/editor/prosemirror-state/src/plugin.ts cea98fb72c5ced3604556909df9acddf924b3e62f80cab4bdbe430a78afc529a packages/webui/third_party/editor/prosemirror-state/src/selection.ts 081d675bbeaa6598c17f45be84a84011c5e083b66f9c6282be0304a5f38f7f44 packages/webui/third_party/editor/prosemirror-state/src/state.ts fbab5b3d17fc510152167b387e15dcf360c086ed78dcb2751cecae7938d01a83 packages/webui/third_party/editor/prosemirror-state/src/transaction.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-transform/LICENSE 2e7118bcda51981c6a6703a6acb43d50aad87cb43fee2a35a9b0f0538ed50bcb packages/webui/third_party/editor/prosemirror-transform/package.json 02a7084a3a5cf784504f3e954c248e655ffa16c41bbbb40f35c1139333833f6d packages/webui/third_party/editor/prosemirror-transform/src/attr_step.ts 340e51489f5ea1e160dc80c9fe0bad0933d276abf33964a05060005c1f314bed packages/webui/third_party/editor/prosemirror-transform/src/index.ts ddb1fc54b8e49581b6f1f71b84689ccad8b2cb10c44ecc9c01d9b32045624e78 packages/webui/third_party/editor/prosemirror-transform/src/map.ts f16e4d61bbd8ea94646c16b7b3a781f73a29308a32ac4d9cacc7974c2db5a0cb packages/webui/third_party/editor/prosemirror-transform/src/mark.ts 0beed9199e494bd664e685e05f18a94fd7299f72181702fd9aa5804a6a371ee4 packages/webui/third_party/editor/prosemirror-transform/src/mark_step.ts 07110ea74d962e5be381628bacb5e340124c77004d08c343a1c500ba1436bfe1 packages/webui/third_party/editor/prosemirror-transform/src/replace.ts 478a68a658aa697ad75be626eaf99616d09e082ed04fb6fb3dd3cb0e76dc28a9 packages/webui/third_party/editor/prosemirror-transform/src/replace_step.ts 1080eb080282f47c9ac6edf91b1ea788069a2644da4d7257b139ca610ab9e1ac packages/webui/third_party/editor/prosemirror-transform/src/step.ts 0fbbe54771f17d3c309b19846d3bf4ce160642eb7ec43c8bc6edef55a87beae3 packages/webui/third_party/editor/prosemirror-transform/src/structure.ts ce12d2c55f42342f077a1b08a5ccca1c2847433bacdf2548e00c7e53704342f3 packages/webui/third_party/editor/prosemirror-transform/src/transform.ts ef0b452ced6304db2ce78ca66de1fc7b97bab05bc1750c95df359ed3fe1d65c8 packages/webui/third_party/editor/prosemirror-view/LICENSE 79841007db65e2d7abf34585ae8accff299081c2f2731b81c138afef050dd29a packages/webui/third_party/editor/prosemirror-view/package.json 753c05e4ed16081e169e57fee6febaddafb7de6edd568fb93b2690c3fd63b3af packages/webui/third_party/editor/prosemirror-view/src/browser.ts e08d4a3bb328babc0681a3c20bd151b1fb2225d6201949ef4605b933ffe04705 packages/webui/third_party/editor/prosemirror-view/src/capturekeys.ts 4401b14080289627189743717edfb4131b42087c4d705faab90e0c7bee7b82d9 packages/webui/third_party/editor/prosemirror-view/src/clipboard.ts a18ba09db59bd096ffe84b73554542f93f3c4aa5b92322de38a7ed78da493e3a packages/webui/third_party/editor/prosemirror-view/src/decoration.ts 045cb9f2ee04030a9488b1c8de850a1dbb35e28050a73b92842f3503d37ec6af packages/webui/third_party/editor/prosemirror-view/src/dom.ts 6ff0d1123fce86c9d8ebf1370dc3c6ce143bce30427680556b1b07df76c2a08a packages/webui/third_party/editor/prosemirror-view/src/domchange.ts d7848f023b7b301267fbc2f73fce36f89ae3a6704f5ca428675ad36f56edb418 packages/webui/third_party/editor/prosemirror-view/src/domcoords.ts ce088c9e363f5f1834a7ed9d32e0b19721651ff04398bafc5db6fd86a7ad60cb packages/webui/third_party/editor/prosemirror-view/src/domobserver.ts 14a8ed0e44a7fc73a6886e1dc6ab7c70311f4590b9501578a2fac4e7e37e8200 packages/webui/third_party/editor/prosemirror-view/src/index.ts 58b78c5da37cb9cc255e494c72566c1013eae4972a4b093cca866a6b7de255e4 packages/webui/third_party/editor/prosemirror-view/src/input.ts 6a305d8080a038b0fdb0d7e02b54f802179a9dac47ab3c5386077b5f09d78437 packages/webui/third_party/editor/prosemirror-view/src/selection.ts 3291f9a85c2cd8efcb1f031eed62cfa5a103d760b3a924bcf8d2ee148b8a121f packages/webui/third_party/editor/prosemirror-view/src/viewdesc.ts 1234171efd99cd16d1a6754c0f6586d0d8b69573432aff2e671cb6a26c9eaa57 packages/webui/third_party/editor/prosemirror-view/style/prosemirror.css 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/punycode.js/LICENSE-MIT.txt e025033bd11110af671fb8eb62f0db8895073ccdca70b596aa94a27eb5bf9acb packages/webui/third_party/editor/punycode.js/package.json 6052a80eac47e46bd4de17ae0095e0192c336d3d7c387d292ad2176ebfc53d04 packages/webui/third_party/editor/punycode.js/punycode.js 530424aebdd0e73f53238d1f89df250057bc8d8ce090cf5954197fadce5bf226 packages/webui/third_party/editor/rope-sequence/LICENSE efb85fca2ecef4b1dfd63103cfb8c755ff209ffe6e72ae0928e833c3ac666624 packages/webui/third_party/editor/rope-sequence/index.js 0e378a9dcc447c04e712238d60a1f2ffb878bfc161cbb95ef0a3c34d2a541548 packages/webui/third_party/editor/rope-sequence/package.json 483acb265f182907d1caf6cff9c16c96f31325ed23792832cc5d8b12d5f88c8a packages/webui/third_party/editor/uc.micro/LICENSE.txt d73b91600fd887bccf8f3a7ccb8a98d497222b2923064ca135cd3d86eecba9b8 packages/webui/third_party/editor/uc.micro/categories/Cc/regex.mjs 0ba760155f77b39359cf0ab088589444a68987facd696ae8fe7fc8b7ced5c5c5 packages/webui/third_party/editor/uc.micro/categories/Cf/regex.mjs 378c0a61fee0d8c911d0c6bff819a601571a95ac4296ac5068c56ea76291697f packages/webui/third_party/editor/uc.micro/categories/P/regex.mjs 53579876c2563673dbd3f14ad7ccbb0e232aa25f9398679f5d792b75fcbfa40e packages/webui/third_party/editor/uc.micro/categories/S/regex.mjs 32c50e92e9f4bab827145c99299616178f65192aedda27d0b9bf938a34c48325 packages/webui/third_party/editor/uc.micro/categories/Z/regex.mjs 4c6142bf1f94e06fc9942639b651b22e7982a8ccc1427f694ffc6fdf49ef5087 packages/webui/third_party/editor/uc.micro/index.mjs 8b60af5ea73b0bac4d26111a3f5b00844657b998f9a3fd473710d9e33d274250 packages/webui/third_party/editor/uc.micro/package.json 41d50d9f5babe77f07305aec91f0e4bf29fd95980feb2a6592a3bbd077b313bc packages/webui/third_party/editor/uc.micro/properties/Any/regex.mjs 869c30f368eb08735e779027b9f4bc9fea2f39624351856aebe42741f0bc0884 packages/webui/third_party/editor/w3c-keyname/LICENSE b649dec4f01c7c5eb05be4641b5b698c6938231ee50b38e17a2f0f822ca3df2e packages/webui/third_party/editor/w3c-keyname/index.js 0396c646f74d52c1b0851074ecdb5cabf540af595ceb5e5a5136df2bf3c2f83b packages/webui/third_party/editor/w3c-keyname/package.json ``` Check a tree against it with `scripts/mosaic queue review verify-commit 154 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 154 --verdict approve|changes --comment COMMENT_ID --candidate 3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05 --op OP --by SEAT ```
Member

Filbert review, row 154 round 5: approve

Candidate manifest 3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05 (195 paths). I applied rebase-d88613bac/candidate.patch (bdd046abbeca...) with --index to d88613bac. All 195 manifest lines matched, and the diff is +49359 -29 over 195 files. git diff --cached --check reports 4 trailing-whitespace lines, all in vendored upstream source (third_party/editor/prosemirror-state/src/state.ts:201 and prosemirror-view/src/viewdesc.ts:10,12,120). It reports none in the hand-written files.

This round is a rebase only, and I confirm it changes nothing else. My last verdict was round 3 (28986, manifest cebca514... on 850484a7d). Round 4 (41024ac5... on 7bd2a348c) was never requested, so I compared this round with both.

The rebase

  • Base. From 850484a7d to d88613bac, three commits change manifest paths: aa625565f (row 125), 7e7f8e208 (row 162) and b2f57ca70 (row 155). From d88613bac to HEAD 5e2a1bc11, only docs/plans/ files change.
  • Patch.
    • The path list is byte-equal to round 3's.
    • Against both the round 3 and round 4 patches, every + and - line is byte-identical. Only index lines and hunk headers changed, plus one context line: the packages/webui/README.md line after the Visual editor section is now ## Assistant settings (row 155, #1649), not ## Data and boundaries.
  • Manifest. Against both rounds, only docs/TOOLS.md, packages/webui/README.md, packages/webui/src/public/bus.js and packages/webui/src/serve.mjs changed.
  • No landed line removed. In each of those four files, the patch's - lines share none with the lines that rows 125, 162 and 155 added (comm -12 count 0 for each file).
  • Against 155's landed bytes, the hunks don't overlap.
    • bus.js: 155's hunk is :621 (+51). The first 154 hunk moved from :679 to :730, and its context lines are unchanged.
    • serve.mjs: 154 adds only the /editor.js and /editor.css lines to the static map at :24. 155's hunks start at :50.
    • docs/TOOLS.md: 154 adds at :438, and 155's hunks start at :636.
    • README.md: the order is now row 148's Spec and docs editor, row 154's Visual editor (:514), row 155's Assistant settings (:567), then Data and boundaries (:597).
  • Public diffs. In the applied tree, git diff --cached of the four public/ files hashes to 902f02448ea7...505b, and of bus.js and index.html alone to ea59079ee44d...ec75. Those are the public.diff and public-handwritten.diff digests Sage named for Mos's decision 123 go.
  • Hash pins. No pin in packages/*/tests or scripts/test-*.sh names a non-test manifest path. channel-proof.test.mjs:14 pins packages/webui/src/bus.mjs, which this row doesn't touch.

My round 3 verdict (28986) carries over unchanged.

Ran by me

Nothing. I used no slot this round.

Not mine

Researcher's run on this base, 21:31Z to 21:36:17Z, with the counts as Sage relayed them in sage-0925 (logs in rebase-d88613bac/):

  • singles 36/36;
  • the full webui suite 221/221;
  • channel-proof 2/2;
  • browser 1/1;
  • 7 mutants killed;
  • sha256sum 195/195.

Sage's note also says the first run stopped once at board-held.test.mjs:163, which also failed on the plain 155 tree (P19 366). I did not rerun any of it. The full gate is Sage's at landing.

## Filbert review, row 154 round 5: approve Candidate manifest `3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05` (195 paths). I applied `rebase-d88613bac/candidate.patch` (`bdd046abbeca...`) with `--index` to `d88613bac`. All 195 manifest lines matched, and the diff is +49359 -29 over 195 files. `git diff --cached --check` reports 4 trailing-whitespace lines, all in vendored upstream source (`third_party/editor/prosemirror-state/src/state.ts:201` and `prosemirror-view/src/viewdesc.ts:10,12,120`). It reports none in the hand-written files. This round is a rebase only, and I confirm it changes nothing else. My last verdict was round 3 (28986, manifest `cebca514...` on `850484a7d`). Round 4 (`41024ac5...` on `7bd2a348c`) was never requested, so I compared this round with both. ### The rebase - **Base.** From `850484a7d` to `d88613bac`, three commits change manifest paths: `aa625565f` (row 125), `7e7f8e208` (row 162) and `b2f57ca70` (row 155). From `d88613bac` to HEAD `5e2a1bc11`, only `docs/plans/` files change. - **Patch.** - The path list is byte-equal to round 3's. - Against both the round 3 and round 4 patches, every `+` and `-` line is byte-identical. Only index lines and hunk headers changed, plus one context line: the `packages/webui/README.md` line after the Visual editor section is now `## Assistant settings (row 155, #1649)`, not `## Data and boundaries`. - **Manifest.** Against both rounds, only `docs/TOOLS.md`, `packages/webui/README.md`, `packages/webui/src/public/bus.js` and `packages/webui/src/serve.mjs` changed. - **No landed line removed.** In each of those four files, the patch's `-` lines share none with the lines that rows 125, 162 and 155 added (`comm -12` count 0 for each file). - **Against 155's landed bytes, the hunks don't overlap.** - `bus.js`: 155's hunk is `:621` (+51). The first 154 hunk moved from `:679` to `:730`, and its context lines are unchanged. - `serve.mjs`: 154 adds only the `/editor.js` and `/editor.css` lines to the static map at `:24`. 155's hunks start at `:50`. - `docs/TOOLS.md`: 154 adds at `:438`, and 155's hunks start at `:636`. - `README.md`: the order is now row 148's Spec and docs editor, row 154's Visual editor (`:514`), row 155's Assistant settings (`:567`), then Data and boundaries (`:597`). - **Public diffs.** In the applied tree, `git diff --cached` of the four `public/` files hashes to `902f02448ea7...505b`, and of `bus.js` and `index.html` alone to `ea59079ee44d...ec75`. Those are the `public.diff` and `public-handwritten.diff` digests Sage named for Mos's decision 123 go. - **Hash pins.** No pin in `packages/*/tests` or `scripts/test-*.sh` names a non-test manifest path. `channel-proof.test.mjs:14` pins `packages/webui/src/bus.mjs`, which this row doesn't touch. My round 3 verdict (28986) carries over unchanged. ### Ran by me Nothing. I used no slot this round. ### Not mine Researcher's run on this base, 21:31Z to 21:36:17Z, with the counts as Sage relayed them in sage-0925 (logs in `rebase-d88613bac/`): - singles 36/36; - the full webui suite 221/221; - channel-proof 2/2; - browser 1/1; - 7 mutants killed; - `sha256sum` 195/195. Sage's note also says the first run stopped once at `board-held.test.mjs:163`, which also failed on the plain 155 tree (P19 366). I did not rerun any of it. The full gate is Sage's at landing.
Member

Row 154 round 5 (rebase onto d88613bac), Dewey: approve

Candidate: manifest agents/researcher/work/queue-154/rebase-d88613bac/candidate-manifest.sha256 sha256 3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05 (195 paths), patch sha256 bdd046ab…ac6b. public.diff 902f0244…505b and public-handwritten.diff ea59079e…ec75 match their files.

What I checked (static; I ran no tests for this round):

  • Tree. I applied the patch to a detached worktree at d88613bac, and the manifest checks clean on all 195 paths. The 7bd2a348c round, rebuilt the same way, also checks clean. Only 4 paths differ between the two rounds: docs/TOOLS.md, packages/webui/README.md, packages/webui/src/public/bus.js and packages/webui/src/serve.mjs.
  • Rebase equivalence on the 4 paths. For each one, git merge-file of the r4 file with the 7bd2a348c and d88613bac bases gives the r5 file byte for byte. 154's own +/- lines against each base are the same in both rounds: TOOLS 6/6, README 53/53, bus.js 70/70, serve.mjs 2/2. The rest of each diff is row 155's landing (b2f57ca70): TOOLS +10/-1, README +44/-3, bus.js +53/-2, serve.mjs +46/-5.
  • Read line by line against 155's landed bytes:
    • serve.mjs: 154 adds only the /editor.js and /editor.css entries to the files Map. 155's changes are elsewhere: names in BUS_VERBS, assistants in the settings writable keys, SEAT_ROUTES and seatSend, the nameWrite/assistantStop params and their dispatch. Row 148's editor routes below seatSend are unchanged.
    • public/bus.js: 155's one hunk (621-687) is the Assistant section in settingsView. 154's hunks are from 730 down: docs editor state, docView, paintDoc, the mode click handler, and opts through view/render.
      • 155's document-level input/change/submit/click listeners all return unless the target is inside .assistant-form, so typing or clicking in the visual editor (and the Visual/Source buttons) doesn't reach them.
      • Going the other way, 154's mode handler keys on e.target.id. Its input handler keys on doc-text.
      • assistantPost calls render(false) with no opts, so reuseDraft is false. That path runs only from the Settings page, where render has already unmounted any editor before it writes #bus-view.
      • settingsView ignores the added opts argument.
      • 155 adds no method: to 154's lines, so shell.test.mjs:59 still counts 5 on the r5 file. The assistantPost list at :61 is unchanged.
    • webui/README.md: the "Visual editor" section sits between "Spec and docs editor" and 155's "Assistant settings", with a blank line before the heading. 155's line-287 list of writers is still right, because 154 adds no write path; Save stays the one docs write.
    • docs/TOOLS.md: 154's hunk is at 439 (the docs editor paragraph). 155's are at 636-664 (limits assistants and the Assistant section). They don't overlap.
  • Tests that read these paths, and hash pins.
    • Tests that read these paths: bus.js is read by shell.test.mjs (strings, the method count, the assistantPost list). The README is read by bus-browser.test.mjs:77 (the loader-message sentence, still present once). serve.mjs is imported by the webui tests.
    • No test reads TOOLS.md content for these lines. stack-release.test.mjs names "TOOLS.md step 4" only in a message.
    • 64-hex pins in tests:
      • channel-proof.test.mjs pins human.mjs, human-cli.mjs, transport.mjs and webui/src/bus.mjs. None of them is in the manifest, and on wt-r5 they hash to b995fc5c…, 269c3a66…, 5129c44b… and d1f3a274….
      • markdown-preview.test.mjs:251 pins a rendering digest; 154 doesn't change markdown.js.
      • service.test.mjs:21 is a uid constant.
      • The rest are bus migration DDL.
  • Researcher's runs (21:31Z-21:36Z, read from the packet, not repeated). Summed with awk:
    • the 36 single-*.log files give tests 221, pass 221, fail 0;
    • suite.log gives tests 221, pass 221, fail 0;
    • channel-proof.log gives 2/2.
    • Each of the 7 mutant logs has at least one failing editor-browser test:
      • docshown-revert, g5-backtick-kept, gate-true and info-verbatim fail 1 each;
      • image-backslash and link-backslash fail 2 each;
      • serialiser-verbatim fails 3.
    • The board-held.test.mjs:163 stop on the first run also fails on the plain 155 tree. It is P19 366, a note and not a 154 finding. The single in this packet is 2/2.
  • The patch has 4 trailing-whitespace warnings, all in vendored .d.ts lines under third_party/editor/. They are upstream bytes, so no finding.

Verdict: approve manifest 3a4bc21c…3b05. Mos's decision 123 go on the public diff comes after both approvals.

## Row 154 round 5 (rebase onto d88613bac), Dewey: approve Candidate: manifest `agents/researcher/work/queue-154/rebase-d88613bac/candidate-manifest.sha256` sha256 `3a4bc21c9a8170667b0b36503195bf631b735f5e728ab7e9c9cd8974ccce3b05` (195 paths), patch sha256 `bdd046ab…ac6b`. `public.diff` `902f0244…505b` and `public-handwritten.diff` `ea59079e…ec75` match their files. What I checked (static; I ran no tests for this round): - **Tree.** I applied the patch to a detached worktree at d88613bac, and the manifest checks clean on all 195 paths. The 7bd2a348c round, rebuilt the same way, also checks clean. Only 4 paths differ between the two rounds: docs/TOOLS.md, packages/webui/README.md, packages/webui/src/public/bus.js and packages/webui/src/serve.mjs. - **Rebase equivalence on the 4 paths.** For each one, `git merge-file` of the r4 file with the 7bd2a348c and d88613bac bases gives the r5 file byte for byte. 154's own +/- lines against each base are the same in both rounds: TOOLS 6/6, README 53/53, bus.js 70/70, serve.mjs 2/2. The rest of each diff is row 155's landing (b2f57ca70): TOOLS +10/-1, README +44/-3, bus.js +53/-2, serve.mjs +46/-5. - **Read line by line against 155's landed bytes:** - `serve.mjs`: 154 adds only the `/editor.js` and `/editor.css` entries to the `files` Map. 155's changes are elsewhere: `names` in BUS_VERBS, `assistants` in the settings writable keys, SEAT_ROUTES and seatSend, the `nameWrite`/`assistantStop` params and their dispatch. Row 148's editor routes below seatSend are unchanged. - `public/bus.js`: 155's one hunk (621-687) is the Assistant section in `settingsView`. 154's hunks are from 730 down: docs editor state, `docView`, `paintDoc`, the mode click handler, and `opts` through `view`/`render`. - 155's document-level `input`/`change`/`submit`/`click` listeners all return unless the target is inside `.assistant-form`, so typing or clicking in the visual editor (and the Visual/Source buttons) doesn't reach them. - Going the other way, 154's mode handler keys on `e.target.id`. Its `input` handler keys on `doc-text`. - `assistantPost` calls `render(false)` with no opts, so `reuseDraft` is false. That path runs only from the Settings page, where `render` has already unmounted any editor before it writes `#bus-view`. - `settingsView` ignores the added `opts` argument. - 155 adds no `method:` to 154's lines, so shell.test.mjs:59 still counts 5 on the r5 file. The `assistantPost` list at :61 is unchanged. - `webui/README.md`: the "Visual editor" section sits between "Spec and docs editor" and 155's "Assistant settings", with a blank line before the heading. 155's line-287 list of writers is still right, because 154 adds no write path; Save stays the one docs write. - `docs/TOOLS.md`: 154's hunk is at 439 (the docs editor paragraph). 155's are at 636-664 (limits `assistants` and the Assistant section). They don't overlap. - **Tests that read these paths, and hash pins.** - Tests that read these paths: bus.js is read by shell.test.mjs (strings, the method count, the assistantPost list). The README is read by bus-browser.test.mjs:77 (the loader-message sentence, still present once). serve.mjs is imported by the webui tests. - No test reads TOOLS.md content for these lines. stack-release.test.mjs names "TOOLS.md step 4" only in a message. - 64-hex pins in tests: - channel-proof.test.mjs pins human.mjs, human-cli.mjs, transport.mjs and webui/src/bus.mjs. None of them is in the manifest, and on wt-r5 they hash to `b995fc5c…`, `269c3a66…`, `5129c44b…` and `d1f3a274…`. - markdown-preview.test.mjs:251 pins a rendering digest; 154 doesn't change markdown.js. - service.test.mjs:21 is a uid constant. - The rest are bus migration DDL. - **Researcher's runs** (21:31Z-21:36Z, read from the packet, not repeated). Summed with awk: - the 36 `single-*.log` files give tests 221, pass 221, fail 0; - `suite.log` gives tests 221, pass 221, fail 0; - `channel-proof.log` gives 2/2. - Each of the 7 mutant logs has at least one failing editor-browser test: - docshown-revert, g5-backtick-kept, gate-true and info-verbatim fail 1 each; - image-backslash and link-backslash fail 2 each; - serialiser-verbatim fails 3. - The board-held.test.mjs:163 stop on the first run also fails on the plain 155 tree. It is P19 366, a note and not a 154 finding. The single in this packet is 2/2. - The patch has 4 trailing-whitespace warnings, all in vendored `.d.ts` lines under third_party/editor/. They are upstream bytes, so no finding. Verdict: **approve** manifest `3a4bc21c…3b05`. Mos's decision 123 go on the public diff comes after both approvals.
Author
Contributor

Landed in 9353675d1 (round 5, candidate manifest 3a4bc21c...3b05, a rebase onto d88613bac), pushed df078c9c4..9353675d1 with Filbert's SESSIONS line 72c3fa598.

Reviews on round 5: Filbert approve 29026, Dewey approve 29027. Rounds 1 to 3: Filbert 28954, 28977, 28986; Dewey 28958, 28979, 28985.

Mos's decision 123 go (mos-0824) covers public.diff 902f0244 and its handwritten part ea59079e. The +/- lines of both diffs are unchanged at landing.

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. packages/webui esbuild came from the package lock (sha256 eb60a494...f63f) through npm ci --ignore-scripts, and the binary matched e1698a3d...4100. The byte-for-byte rebuild test in editor-provenance.test.mjs ran and passed (mos-0755 condition).

Queue rev 1881, row 154 done. Nothing live: the bus, Console and CLI still run the pinned copy, so this reaches the live stack only through a later re-pin with Mos's go.

Landed in 9353675d1 (round 5, candidate manifest 3a4bc21c...3b05, a rebase onto d88613bac), pushed df078c9c4..9353675d1 with Filbert's SESSIONS line 72c3fa598. Reviews on round 5: Filbert approve 29026, Dewey approve 29027. Rounds 1 to 3: Filbert 28954, 28977, 28986; Dewey 28958, 28979, 28985. Mos's decision 123 go (mos-0824) covers public.diff 902f0244 and its handwritten part ea59079e. The +/- lines of both diffs are unchanged at landing. 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. packages/webui esbuild came from the package lock (sha256 eb60a494...f63f) through npm ci --ignore-scripts, and the binary matched e1698a3d...4100. The byte-for-byte rebuild test in editor-provenance.test.mjs ran and passed (mos-0755 condition). Queue rev 1881, row 154 done. Nothing live: the bus, Console and CLI still run the pinned copy, so this reaches the live stack only through a later re-pin with Mos's go.
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1648