Skip to content

chore(deps-dev): bump the npm-todov2 group in /opencode/plugins/todov2-opencode with 2 updates - #142

Merged
ckir merged 2 commits into
mainfrom
dependabot/npm_and_yarn/opencode/plugins/todov2-opencode/npm-todov2-3b74658705
Nov 8, 2026
Merged

ckir merged 2 commits into
mainfrom
dependabot/npm_and_yarn/opencode/plugins/todov2-opencode/npm-todov2-3b74658705

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 8, 2026

Copy link
Copy Markdown
Contributor

Bumps the npm-todov2 group in /opencode/plugins/todov2-opencode with 2 updates: @opentui/core and @opentui/solid.

Updates @opentui/core from 0.8.0 to 0.8.2

Release notes

Sourced from @​opentui/core's releases.

Release v0.8.2

In 0.8.1, suspend() turned off raw mode at once, before the Session wrote the bytes that stop mouse reporting. If you moved the mouse while you pressed Ctrl+Z or opened $EDITOR, the terminal echoed the reports at the prompt. The next program then read the queued reports as typed text. After Ctrl+Z, bash ran them as commands. In 0.8.2, raw mode stays on until the promise from suspend() settles, whether it resolves or rejects. destroy() already worked this way. When the promise settles, OpenTUI also discards the input that the kernel queued on process stdin. In a pty test with mouse motion during the transition, the number of echoed and queued reports went from 4 to 0. With a 15 ms link delay, it went from 60 to 0. Keys typed during the transition, about 20 ms, are discarded too. The fix works only if you await suspend() before you give the terminal to another program:

await renderer.suspend()
spawnSync(process.env.EDITOR ?? "vi", [file], { stdio: "inherit" })
await renderer.resume()

If you do not await it, the next program starts while stdin is still in raw mode and mouse reporting is still on.

One layout change can show in existing apps. Native text measurement used to clamp a text's height to Yoga's "at most" height, but only when the width was "at most" too. Yoga reuses a size that it measured at an "at most" width when the same width later comes back as exact. As a result, after an edit a text could keep a clamped height that a fresh layout would not give it, and it lost rows. The same clamp cut text in a flex-start ScrollBox to the height of the viewport, and it cut text in an auto-height absolute box to one row. Now a text's height is its wrapped line count under any height mode, the same way TextTable already measured it. Stretched text and text with an explicit width already kept their full height. Now text that is taller than its space also keeps its full height in centered and flex-start columns, so its siblings shrink or move. In a short centered dialog, the row below a long body can move onto the bottom border. To keep that row in place, give the dialog room for the body, or put the body in a ScrollBox.

MarkdownRenderable also changes how it uses renderNode. In the default coalesced mode, a change to syntaxStyle, fg, conceal, or streaming used to restyle every block as if the default renderer had made it. A custom heading from renderNode became a CodeRenderable, and custom blockquote and rule boxes lost their border color. Now coalesced mode does what top-level mode already did. When a style changes, renderNode runs again for each block with a custom node. Its result replaces the old node, and the old node is destroyed. So renderNode must return a new renderable each time it is called. If it caches a renderable and returns it again, it returns a renderable that was already destroyed:

const markdown = new MarkdownRenderable(renderer, {
  content: "# Title\n\nHello",
  syntaxStyle,
  renderNode: (token) => {
    if (token.type !== "heading") return undefined
    return new TextRenderable(renderer, { content: token.text.toUpperCase() })
  },
})

Blocks from context.defaultRender() are still restyled in place, and they cause no extra renderNode call.

Changed

  • core: A text keeps its full wrapped height under any height mode. It no longer loses rows after an edit, and it shows all its rows in a flex-start ScrollBox or an auto-height absolute box. In centered and flex-start columns, text that is taller than its space makes its siblings shrink or move. See Layout. (#1906)

Fixed

  • core: suspend() leaves raw mode when its promise settles, and then it discards the input queued on stdin. Mouse reports no longer show at the prompt or reach the next program as typed text. See Lifecycle and cleanup. (#1905)
  • core: When streaming is off, a content change on MarkdownRenderable lexes the whole content again. The last block no longer splits in two when the new text extends the old text, as when > one becomes > one\n> two. See Markdown. (#1903)
  • core: In the default coalesced mode, a style change on MarkdownRenderable runs renderNode again for blocks with a custom node, so custom headings, blockquotes, and rules keep their renderable and border color. A style change no longer parses unchanged content again. See Markdown. (#1904)
  • core: In split-footer mode with externalOutputMode: "capture-stdout", the renderer removes escape sequences from captured writes, so colors and OSC 8 links no longer leave text such as [31m in scrollback. Captured rows are plain text. See Renderer. (#1902)
  • core: On Node 26.9.0 and later with --permission, the audio recorder keeps a recording when the Permission Model denies FileHandle.sync(). The recorder closes the file without the sync. See Audio capture and recording. (#1907)
  • ssh: A session with a late close that wrote the terminal restore exits its channel with status 0 instead of 1, and onError still gets the late close. If the renderer cleanup fails during a late close, closed rejects with that failure and the channel exits with status 1. See SSH. (#1900)

API changes and documentation: https://opentui.com/docs/releases/0.8.2

What's Changed

... (truncated)

Commits
  • b7d9797 Release v0.8.2
  • e43fdc1 core: leave raw mode when suspend() settles (#1905)
  • 6d707f4 native: measure text height without the at-most clamp (#1906)
  • 9b7b1ba core: keep recordings when the Permission Model blocks fsync (#1907)
  • b9028c3 core: rerun renderNode for custom Markdown blocks on restyle (#1904)
  • 06c63c4 core: strip escape sequences from captured stdout (#1902)
  • 4b7b229 ssh: exit 0 after a late close that wrote the restore (#1900)
  • ce1376b core: lex all markdown again when an edit is not streaming (#1903)
  • 9a09079 Release v0.8.1
  • 7303776 core: bound the whole close and restore at the limit (#1893)
  • Additional commits viewable in compare view

Updates @opentui/solid from 0.8.0 to 0.8.2

Release notes

Sourced from @​opentui/solid's releases.

Release v0.8.2

In 0.8.1, suspend() turned off raw mode at once, before the Session wrote the bytes that stop mouse reporting. If you moved the mouse while you pressed Ctrl+Z or opened $EDITOR, the terminal echoed the reports at the prompt. The next program then read the queued reports as typed text. After Ctrl+Z, bash ran them as commands. In 0.8.2, raw mode stays on until the promise from suspend() settles, whether it resolves or rejects. destroy() already worked this way. When the promise settles, OpenTUI also discards the input that the kernel queued on process stdin. In a pty test with mouse motion during the transition, the number of echoed and queued reports went from 4 to 0. With a 15 ms link delay, it went from 60 to 0. Keys typed during the transition, about 20 ms, are discarded too. The fix works only if you await suspend() before you give the terminal to another program:

await renderer.suspend()
spawnSync(process.env.EDITOR ?? "vi", [file], { stdio: "inherit" })
await renderer.resume()

If you do not await it, the next program starts while stdin is still in raw mode and mouse reporting is still on.

One layout change can show in existing apps. Native text measurement used to clamp a text's height to Yoga's "at most" height, but only when the width was "at most" too. Yoga reuses a size that it measured at an "at most" width when the same width later comes back as exact. As a result, after an edit a text could keep a clamped height that a fresh layout would not give it, and it lost rows. The same clamp cut text in a flex-start ScrollBox to the height of the viewport, and it cut text in an auto-height absolute box to one row. Now a text's height is its wrapped line count under any height mode, the same way TextTable already measured it. Stretched text and text with an explicit width already kept their full height. Now text that is taller than its space also keeps its full height in centered and flex-start columns, so its siblings shrink or move. In a short centered dialog, the row below a long body can move onto the bottom border. To keep that row in place, give the dialog room for the body, or put the body in a ScrollBox.

MarkdownRenderable also changes how it uses renderNode. In the default coalesced mode, a change to syntaxStyle, fg, conceal, or streaming used to restyle every block as if the default renderer had made it. A custom heading from renderNode became a CodeRenderable, and custom blockquote and rule boxes lost their border color. Now coalesced mode does what top-level mode already did. When a style changes, renderNode runs again for each block with a custom node. Its result replaces the old node, and the old node is destroyed. So renderNode must return a new renderable each time it is called. If it caches a renderable and returns it again, it returns a renderable that was already destroyed:

const markdown = new MarkdownRenderable(renderer, {
  content: "# Title\n\nHello",
  syntaxStyle,
  renderNode: (token) => {
    if (token.type !== "heading") return undefined
    return new TextRenderable(renderer, { content: token.text.toUpperCase() })
  },
})

Blocks from context.defaultRender() are still restyled in place, and they cause no extra renderNode call.

Changed

  • core: A text keeps its full wrapped height under any height mode. It no longer loses rows after an edit, and it shows all its rows in a flex-start ScrollBox or an auto-height absolute box. In centered and flex-start columns, text that is taller than its space makes its siblings shrink or move. See Layout. (#1906)

Fixed

  • core: suspend() leaves raw mode when its promise settles, and then it discards the input queued on stdin. Mouse reports no longer show at the prompt or reach the next program as typed text. See Lifecycle and cleanup. (#1905)
  • core: When streaming is off, a content change on MarkdownRenderable lexes the whole content again. The last block no longer splits in two when the new text extends the old text, as when > one becomes > one\n> two. See Markdown. (#1903)
  • core: In the default coalesced mode, a style change on MarkdownRenderable runs renderNode again for blocks with a custom node, so custom headings, blockquotes, and rules keep their renderable and border color. A style change no longer parses unchanged content again. See Markdown. (#1904)
  • core: In split-footer mode with externalOutputMode: "capture-stdout", the renderer removes escape sequences from captured writes, so colors and OSC 8 links no longer leave text such as [31m in scrollback. Captured rows are plain text. See Renderer. (#1902)
  • core: On Node 26.9.0 and later with --permission, the audio recorder keeps a recording when the Permission Model denies FileHandle.sync(). The recorder closes the file without the sync. See Audio capture and recording. (#1907)
  • ssh: A session with a late close that wrote the terminal restore exits its channel with status 0 instead of 1, and onError still gets the late close. If the renderer cleanup fails during a late close, closed rejects with that failure and the channel exits with status 1. See SSH. (#1900)

API changes and documentation: https://opentui.com/docs/releases/0.8.2

What's Changed

... (truncated)

Commits
  • b7d9797 Release v0.8.2
  • 9a09079 Release v0.8.1
  • 4b10d91 core: make the TypeScript tests faster and fix two test-order flakes (#1895)
  • 9b7d5fb native: show a source region on video and image nodes (#1888)
  • 1823930 native: add an audio option to play video without a device (#1884)
  • b8032e2 native: add a video player node (#1800)
  • 60b7ce7 core: fix ScrollBox Markdown collapse and selection listener leak (#1863)
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the npm-todov2 group in /opencode/plugins/todov2-opencode with 2 updates: [@opentui/core](https://github.com/anomalyco/opentui/tree/HEAD/packages/core) and [@opentui/solid](https://github.com/anomalyco/opentui/tree/HEAD/packages/solid).


Updates `@opentui/core` from 0.8.0 to 0.8.2
- [Release notes](https://github.com/anomalyco/opentui/releases)
- [Commits](https://github.com/anomalyco/opentui/commits/v0.8.2/packages/core)

Updates `@opentui/solid` from 0.8.0 to 0.8.2
- [Release notes](https://github.com/anomalyco/opentui/releases)
- [Commits](https://github.com/anomalyco/opentui/commits/v0.8.2/packages/solid)

---
updated-dependencies:
- dependency-name: "@opentui/core"
  dependency-version: 0.8.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-todov2
- dependency-name: "@opentui/solid"
  dependency-version: 0.8.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-todov2
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Nov 8, 2026
@ckir
ckir enabled auto-merge November 8, 2026 22:49
@ckir
ckir merged commit 73d1648 into main Nov 8, 2026
34 checks passed
@ckir
ckir deleted the dependabot/npm_and_yarn/opencode/plugins/todov2-opencode/npm-todov2-3b74658705 branch November 8, 2026 22:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant