Follow-up build work from the parity contract in #52 (part of map #47). Not a map ticket — nothing left to decide here.
Delete dead editor-only prose CSS.scss/westgate/_wiki-prose.scss carries ~50 lines targeting .ck.ck-editor__editable_inline.ck-content (roughly :341–:540). The editor is TipTap; nothing emits those classes. They are editor-only copies of heading rules — the same shape that broke justification.
Collapse the duplicated reading measure._wiki-prose.scss:228 (reader .wiki-content-layout) and :236 (compose editable) both hardcode 58rem. One meaning, two constants. Set --wiki-prose-measure instead; the plugin already applies it to both surfaces (wiki-article-body.css:79, default 70ch).
Add the static parity test. Fail on any prose-affecting property reached through a reader-only ancestor (.wiki-page-content, .wiki-with-fab, .wiki-content-layout, .wiki-namespace-index) or an editor-only ancestor (.westgate-wiki-compose, .wiki-editor__*, .ProseMirror-*). Chrome properties are whitelisted.
Alignment ownership (move justify + hyphens + opt-out set into the plugin behind --wiki-prose-text-align) is plugin work — file in sow-nodebb-plugin-wiki when this lands.
Verify in the live dev stack on both reader and editor, per #52.
Follow-up build work from the parity contract in #52 (part of map #47). Not a map ticket — nothing left to decide here.
1. **Delete dead editor-only prose CSS.** `scss/westgate/_wiki-prose.scss` carries ~50 lines targeting `.ck.ck-editor__editable_inline.ck-content` (roughly :341–:540). The editor is TipTap; nothing emits those classes. They are editor-only copies of heading rules — the same shape that broke justification.
2. **Collapse the duplicated reading measure.** `_wiki-prose.scss:228` (reader `.wiki-content-layout`) and `:236` (compose editable) both hardcode `58rem`. One meaning, two constants. Set `--wiki-prose-measure` instead; the plugin already applies it to both surfaces (`wiki-article-body.css:79`, default `70ch`).
3. **Add the static parity test.** Fail on any prose-affecting property reached through a reader-only ancestor (`.wiki-page-content`, `.wiki-with-fab`, `.wiki-content-layout`, `.wiki-namespace-index`) or an editor-only ancestor (`.westgate-wiki-compose`, `.wiki-editor__*`, `.ProseMirror-*`). Chrome properties are whitelisted.
Alignment ownership (move justify + hyphens + opt-out set into the plugin behind `--wiki-prose-text-align`) is plugin work — file in sow-nodebb-plugin-wiki when this lands.
Verify in the live dev stack on **both** reader and editor, per #52.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up build work from the parity contract in #52 (part of map #47). Not a map ticket — nothing left to decide here.
scss/westgate/_wiki-prose.scsscarries ~50 lines targeting.ck.ck-editor__editable_inline.ck-content(roughly :341–:540). The editor is TipTap; nothing emits those classes. They are editor-only copies of heading rules — the same shape that broke justification._wiki-prose.scss:228(reader.wiki-content-layout) and:236(compose editable) both hardcode58rem. One meaning, two constants. Set--wiki-prose-measureinstead; the plugin already applies it to both surfaces (wiki-article-body.css:79, default70ch)..wiki-page-content,.wiki-with-fab,.wiki-content-layout,.wiki-namespace-index) or an editor-only ancestor (.westgate-wiki-compose,.wiki-editor__*,.ProseMirror-*). Chrome properties are whitelisted.Alignment ownership (move justify + hyphens + opt-out set into the plugin behind
--wiki-prose-text-align) is plugin work — file in sow-nodebb-plugin-wiki when this lands.Verify in the live dev stack on both reader and editor, per #52.