v4.8.0
Focus: Live Terminal Blocks — embed runnable, interactive terminals in documentation pages, driven by project-provided engines.
Changes
- ✨ Added
<d-block-terminal>— a live xterm.js terminal block driven by consumer engines (src/terminals/**/*.js), with streaming ANSI output, Run/Replay/Stop controls, status phases and lazy runtime loading (nothing heavy loads until the first Run) - ✨ Added the terminal engine contract:
async ({ onOutput, onError, onStatus }) => ({ run, source?, input?, stop?, dispose? })+meta = { label, language }— cheap factories run at mount so the source panel and Stop wiring exist before the first run - ⌨️ Added interactive input: when the engine implements
input(data), keyboard (and terminal mouse-tracking sequences) are forwarded byte-for-byte with click-to-focus capture, a "Click to interact" hint andCtrl+Cmapped tostop() - 🔗 Added deep-linkable command tabs: the selected tab persists as a
?t<n>query param — reloads and shared links restore the tab and scroll the block into view - 📄 Added a source panel + GitHub action backed by the engine's
source(command)hook - 🧪 Added the dependency-free
demo-echoengine (including an interactivereadcommand) and the/content/blocks/terminalsmanual pages (en-US + pt-BR) - 🛠️ Fixed
<details>tag rendering in Markdown sections - 📚 Updated README with the Terminal Blocks authoring guide and engine contract notes
- ✅ Validated with 201 passing tests and a scaffold build