From b78c13e3547790a7cb6d8330ef019fe4877a662b Mon Sep 17 00:00:00 2001 From: Nishant Mishra Date: Sun, 23 Aug 2026 17:50:44 +0530 Subject: [PATCH 1/3] feat(playground): manual undo/redo for the editor normalize() rebuilds the DOM after every input event, so the browser's native undo history never survives; ctrl+z did nothing. Keep our own stack instead of pulling in an editor component: - snapshot commits land 400ms after the last mutation and store the previous {source, caretOffset}, so one step rewinds a typed burst - ctrl/cmd+z undoes, ctrl/cmd+shift+z and ctrl+y redo; the combos are always swallowed since native undo would corrupt the rebuilt DOM - programmatic replaces (autocomplete accept, example load) reset the stack, as sketched in #18 - depth capped at 200 snapshots Closes #18 --- web/main.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/web/main.js b/web/main.js index da46b06..f03a17f 100644 --- a/web/main.js +++ b/web/main.js @@ -280,6 +280,7 @@ function buildEditorFragment(src) { function setEditorSource(src, caretOffset) { editor.replaceChildren(buildEditorFragment(src)); setCaretOffset(caretOffset ?? src.length); + resetUndoHistory(); } function normalize() { @@ -287,6 +288,7 @@ function normalize() { const src = editorSource(editor); editor.replaceChildren(buildEditorFragment(src)); if (off !== null) setCaretOffset(off); + scheduleUndoCommit(); } editor.addEventListener("input", () => { @@ -294,6 +296,104 @@ editor.addEventListener("input", () => { updateAutocomplete(); }); +// ---------------------------------------------------------------- undo +// +// Rebuilding the DOM on every keystroke throws away the browser's +// native undo history, so the editor keeps its own. A commit lands +// UNDO_DEBOUNCE_MS after the last mutation and stores the *previous* +// known state, so one undo step rewinds a whole typed burst, not just +// the final character. Programmatic replaces (autocomplete accept, +// example load) go through setEditorSource and restart the stack. + +const UNDO_DEBOUNCE_MS = 400; +const UNDO_MAX_DEPTH = 200; + +let undoStack = []; +let redoStack = []; +let committed = null; // {source, caretOffset}: newest state outside the stacks +let undoTimer = null; + +function currentState() { + return { + source: editorSource(editor), + caretOffset: getCaretOffset(), + }; +} + +// Moves `committed` forward to what is in the editor right now, +// pushing the stale value onto the undo stack when the text changed. +function commitUndoPoint() { + const cur = currentState(); + if (cur.source !== committed.source) { + undoStack.push(committed); + if (undoStack.length > UNDO_MAX_DEPTH) undoStack.shift(); + redoStack = []; + } + committed = cur; +} + +function scheduleUndoCommit() { + clearTimeout(undoTimer); + undoTimer = setTimeout(() => { + undoTimer = null; + commitUndoPoint(); + }, UNDO_DEBOUNCE_MS); +} + +// Ctrl+z must never race a pending commit, or the burst it belongs to +// would be skipped entirely. +function flushUndoCommit() { + if (!undoTimer) return; + clearTimeout(undoTimer); + undoTimer = null; + commitUndoPoint(); +} + +function resetUndoHistory() { + clearTimeout(undoTimer); + undoTimer = null; + undoStack = []; + redoStack = []; + committed = currentState(); +} + +function applySnapshot(snap) { + editor.replaceChildren(buildEditorFragment(snap.source)); + setCaretOffset(snap.caretOffset ?? snap.source.length); + committed = snap; + hideAutocomplete(); // the word before the caret may no longer exist +} + +function undoEdit() { + flushUndoCommit(); + const prev = undoStack.pop(); + if (!prev) return; + redoStack.push(currentState()); + applySnapshot(prev); +} + +function redoEdit() { + flushUndoCommit(); + const next = redoStack.pop(); + if (!next) return; + undoStack.push(currentState()); + applySnapshot(next); +} + +// Native undo is dead here (normalize() rewrites the DOM it would +// target), so these combos are always swallowed, history or not. +editor.addEventListener("keydown", (e) => { + if (!(e.ctrlKey || e.metaKey)) return; + const key = e.key.toLowerCase(); + if (key === "z" && !e.shiftKey) { + e.preventDefault(); + undoEdit(); + } else if ((key === "z" && e.shiftKey) || key === "y") { + e.preventDefault(); + redoEdit(); + } +}); + // Paste as plain text at the caret; the input event then normalizes. editor.addEventListener("paste", (e) => { e.preventDefault(); From 7c632ad5b0ec23aa7d64e7d6cae378bc52c9f781 Mon Sep 17 00:00:00 2001 From: Nishant Mishra Date: Sun, 23 Aug 2026 18:02:04 +0530 Subject: [PATCH 2/3] fix(playground): guard undo commit against a missing baseline Self-review found committed is only initialized because loadExample runs synchronously at startup; make commitUndoPoint adopt the current state instead of throwing if that init ever moves. --- web/main.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web/main.js b/web/main.js index f03a17f..525af65 100644 --- a/web/main.js +++ b/web/main.js @@ -324,6 +324,12 @@ function currentState() { // pushing the stale value onto the undo stack when the text changed. function commitUndoPoint() { const cur = currentState(); + if (!committed) { + // No baseline yet; startup order guarantees one exists today, + // but a reorder shouldn't turn into a TypeError here. + committed = cur; + return; + } if (cur.source !== committed.source) { undoStack.push(committed); if (undoStack.length > UNDO_MAX_DEPTH) undoStack.shift(); From db1c2328c43f9bccaebb225f039ab6c9d4eb5214 Mon Sep 17 00:00:00 2001 From: Nishant <52268717+ohnishant@users.noreply.github.com> Date: Sun, 23 Aug 2026 19:36:22 +0530 Subject: [PATCH 3/3] feat(playground): line-number gutter, Hack font, string literals (#23) * feat(playground): vendor Hack as the editor font The CSS already asked for JetBrains Mono and Fira Code but loaded neither, so every visitor saw a fallback. Ship Hack woff2 (regular + bold, MIT license included) with @font-face and put it first in the mono stacks for editor, output, and autocomplete. * feat(playground): highlight string literals in the editor (#21) buildEditorFragment now splits quoted spans before emote substitution and wraps them in a .str span. The quote pairing mirrors the lexer's readString: no escapes, newlines allowed, unterminated runs to EOF. Emote names still render as images inside strings, as before. editorSource/forEachPiece/setCaretOffset already recurse into element nodes, so the span wrapper needs no caret-math changes. * feat(playground): line-number gutter with click-to-line The editor gets a real text-editor gutter: numbers derived from the source (never the DOM), vertical scroll mirrored from the editor, horizontal scrolls left alone, and clicking a number places the caret at that line's first character. applySnapshot updates the gutter too, so undo/redo keep the count honest. Two layout fixes make internal scrolling possible at all: main's grid row is capped with minmax(0,1fr) and the wide layout gives body a definite height, so long source scrolls inside the pane instead of stretching the page and dragging the gutter away. The editor switches from pre-wrap to pre for the same reason - a wrapped line would span several rows and desynchronize the numbers. * fix(playground): address self-review findings on the editor work - pair strings the way the lexer does: #-to-EOL comment regions are carved out first, so a quote in a comment can no longer open a phantom string across real code; comments render muted, emotes inside them still render as images - ignore gutter clicks on empty space below the last number instead of teleporting the caret to line 1 - resync gutter scroll after undo/redo restores, for engines that skip the scroll event when clamping scrollTop - drop hack-bold.woff2: no stylesheet requests bold monospace Found via the self-review posted on #23. --- web/fonts/LICENSE.md | 45 ++++++++++++++++++++ web/fonts/hack-regular.woff2 | Bin 0 -> 106236 bytes web/index.html | 7 +++- web/main.js | 79 +++++++++++++++++++++++++++++++++-- web/style.css | 65 ++++++++++++++++++++++++---- 5 files changed, 183 insertions(+), 13 deletions(-) create mode 100644 web/fonts/LICENSE.md create mode 100644 web/fonts/hack-regular.woff2 diff --git a/web/fonts/LICENSE.md b/web/fonts/LICENSE.md new file mode 100644 index 0000000..08927e5 --- /dev/null +++ b/web/fonts/LICENSE.md @@ -0,0 +1,45 @@ +The work in the Hack project is Copyright 2018 Source Foundry Authors and licensed under the MIT License + +The work in the DejaVu project was committed to the public domain. + +Bitstream Vera Sans Mono Copyright 2003 Bitstream Inc. and licensed under the Bitstream Vera License with Reserved Font Names "Bitstream" and "Vera" + +### MIT License + +Copyright (c) 2018 Source Foundry Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +### BITSTREAM VERA LICENSE + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. diff --git a/web/fonts/hack-regular.woff2 b/web/fonts/hack-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..524465cf5113597c83bb73e60fff0bd64fef0644 GIT binary patch literal 106236 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 NE|#bL1PcHF{s%4XDq#Qs literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html index b8121f3..4bdc9e9 100644 --- a/web/index.html +++ b/web/index.html @@ -27,8 +27,11 @@

peepoScript playground

-
+
+ +
+
diff --git a/web/main.js b/web/main.js index 525af65..83464e9 100644 --- a/web/main.js +++ b/web/main.js @@ -6,6 +6,7 @@ const TOWDAN_TWITCH_ID = "76020462"; // towdan's channel owns the preferred emot const AC_MAX_ITEMS = 8; const editor = document.getElementById("editor"); +const gutter = document.getElementById("gutter"); const output = document.getElementById("output"); const runBtn = document.getElementById("run-btn"); const clearBtn = document.getElementById("clear-btn"); @@ -265,29 +266,67 @@ function setCaretOffset(offset) { } // Rebuilds the DOM from source text, swapping exact emote-name words -// for their images. Identifiers split on everything non-word-like, so +// for their images and wrapping strings/comments in colored spans. +// Identifiers split on everything non-word-like, so // `peepoChat "Wokege".` renders inside the string quotes too. function buildEditorFragment(src) { const frag = document.createDocumentFragment(); - for (const part of src.split(/([A-Za-z0-9_]+)/)) { + // Regions mirror the lexer's scan order. A quote opens a string + // (quote to next quote, no escapes, newlines allowed; unterminated + // runs to EOF, which is exactly what readString will swallow as + // ILLEGAL) unless a comment opened first: skipComment eats # to end + // of line before readString can see any quote inside it. Whichever + // region starts earlier wins the split, so a # inside a string stays + // literal and a quote inside a comment stays inert. + for (const part of src.split(/("[^"]*(?:"|$)|#[^\n]*)/)) { if (!part) continue; - if (emotes.has(part)) frag.append(makeEmoteImg(part)); - else frag.append(part); + if (part.startsWith('"') || part.startsWith("#")) { + const span = document.createElement("span"); + span.className = part.startsWith('"') ? "str" : "com"; + appendEmoteParts(span, part); + frag.append(span); + } else { + appendEmoteParts(frag, part); + } } return frag; } +function appendEmoteParts(root, text) { + for (const part of text.split(/([A-Za-z0-9_]+)/)) { + if (!part) continue; + if (emotes.has(part)) root.append(makeEmoteImg(part)); + else root.append(part); + } +} + function setEditorSource(src, caretOffset) { editor.replaceChildren(buildEditorFragment(src)); setCaretOffset(caretOffset ?? src.length); + renderGutter(src); resetUndoHistory(); } +// Line numbers are derived from the source, not the DOM, so wrapped or +// partial nodes can never skew them. +function renderGutter(src) { + const lines = Math.max(1, src.split("\n").length); + if (gutter.childElementCount === lines) return; + const frag = document.createDocumentFragment(); + for (let i = 1; i <= lines; i++) { + const row = document.createElement("div"); + row.textContent = i; + frag.append(row); + } + gutter.replaceChildren(frag); +} + function normalize() { const off = getCaretOffset(); const src = editorSource(editor); editor.replaceChildren(buildEditorFragment(src)); if (off !== null) setCaretOffset(off); + renderGutter(src); scheduleUndoCommit(); } @@ -366,6 +405,10 @@ function resetUndoHistory() { function applySnapshot(snap) { editor.replaceChildren(buildEditorFragment(snap.source)); setCaretOffset(snap.caretOffset ?? snap.source.length); + renderGutter(snap.source); + // Content may no longer support the old scroll position; not every + // engine fires a scroll event for its own clamp. + gutter.scrollTop = editor.scrollTop; committed = snap; hideAutocomplete(); // the word before the caret may no longer exist } @@ -409,6 +452,34 @@ editor.addEventListener("paste", (e) => { editor.addEventListener("blur", () => hideAutocompleteSoon()); +// The editor is the only scroller; the gutter mirrors it vertically and +// never moves horizontally (wide lines scroll under fixed numbers, like +// a real editor). +editor.addEventListener("scroll", () => { + gutter.scrollTop = editor.scrollTop; +}); + +// Clicking a number puts the caret at the start of that line. +gutter.addEventListener("mousedown", (e) => { + e.preventDefault(); + const row = e.target.closest("div"); + // Clicks landing on the container itself (empty space past the last + // number) must not teleport the caret to line 1. + if (!row || row === gutter) return; + const line = [...gutter.children].indexOf(row); + const src = editorSource(editor); + let off = 0; + for (let i = 0; i < line; i++) { + const next = src.indexOf("\n", off); + if (next === -1) break; + off = next + 1; + } + // Focus first: an empty editor has no boundary for setCaretOffset, + // which would otherwise return early and leave focus on the gutter. + editor.focus(); + setCaretOffset(Math.min(off, src.length)); +}); + // -------------------------------------------------------- autocomplete let acItems = []; diff --git a/web/style.css b/web/style.css index ede750f..8ce5915 100644 --- a/web/style.css +++ b/web/style.css @@ -1,3 +1,14 @@ +/* Hack is vendored in fonts/ (MIT, see LICENSE.md there) so the + editor renders identically offline. Regular weight only: nothing + in the stylesheet requests bold monospace. */ +@font-face { + font-family: "Hack"; + src: url("fonts/hack-regular.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + :root { --bg: #0e0e10; --panel: #18181b; @@ -8,6 +19,7 @@ --accent-dim: #6441a5; --error: #ff6b6b; --ok: #57d98d; + --string: #e6b455; } * { box-sizing: border-box; } @@ -43,13 +55,24 @@ main { flex: 1; display: grid; grid-template-columns: 1fr 1fr; + /* Cap the row at main's height so long source scrolls inside the + editor (keeping the gutter pinned) instead of stretching the page. */ + grid-template-rows: minmax(0, 1fr); gap: 1rem; padding: 1rem 1.25rem; min-height: 0; } @media (max-width: 900px) { - main { grid-template-columns: 1fr; } + main { grid-template-columns: 1fr; grid-template-rows: none; } +} + +@media (min-width: 901px) { + /* min-height alone leaves body height content-driven, so a long + source stretches the page instead of scrolling inside the editor + (which would drag the gutter off screen). A definite height lets + flex/grid bound the panes. */ + body { height: 100vh; } } .pane { @@ -91,13 +114,38 @@ main { cursor: pointer; } +.editor-wrap { + flex: 1; + display: flex; + align-items: stretch; + min-height: 0; + overflow: hidden; +} + +/* Numbers must share the editor's font metrics and top padding or the + rows drift apart. */ +#gutter { + overflow: hidden; + padding: 0.9rem 0.6ch 0.9rem 0.9rem; + text-align: right; + color: var(--muted); + background: #141416; + border-right: 1px solid var(--panel-edge); + user-select: none; + cursor: default; + font-family: "Hack", ui-monospace, "Cascadia Code", "JetBrains Mono", monospace; + font-size: 0.95rem; + line-height: 1.55; +} + #editor { flex: 1; padding: 0.9rem; - overflow-y: auto; - white-space: pre-wrap; - word-break: break-word; - font-family: "JetBrains Mono", "Fira Code", ui-monospace, monospace; + overflow: auto; + /* pre, not pre-wrap: a wrapped line would occupy several rows and + desynchronize the gutter numbers. */ + white-space: pre; + font-family: "Hack", ui-monospace, "Cascadia Code", "JetBrains Mono", monospace; font-size: 0.95rem; line-height: 1.55; outline: none; @@ -107,6 +155,9 @@ main { #editor:focus { background: #1c1c21; } +#editor .str { color: var(--string); } +#editor .com { color: var(--muted); } + #editor img.emote, #output img.emote { height: 1.35em; @@ -133,7 +184,7 @@ main { justify-content: space-between; gap: 1rem; padding: 0.35rem 0.75rem; - font-family: "JetBrains Mono", "Fira Code", ui-monospace, monospace; + font-family: "Hack", ui-monospace, "Cascadia Code", "JetBrains Mono", monospace; font-size: 0.9rem; cursor: pointer; } @@ -177,7 +228,7 @@ button:disabled { opacity: 0.45; cursor: not-allowed; } flex: 1; padding: 0.9rem; overflow-y: auto; - font-family: "JetBrains Mono", "Fira Code", ui-monospace, monospace; + font-family: "Hack", ui-monospace, "Cascadia Code", "JetBrains Mono", monospace; font-size: 0.95rem; line-height: 1.55; white-space: pre-wrap;