Repository navigation
chore(deps): update opencode host runtime to v0.8.3 - #13
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.8.2→0.8.30.8.2→0.8.3Release Notes
anomalyco/opentui (@opentui/core)
v0.8.3Compare Source
Over ssh, sshd drops
COLORTERM. A terminal that draws 24-bit color but sendsTERM=xterm-256colorwithoutCOLORTERMtherefore got every color mapped to the 256-color palette. In WezTerm and xterm over ssh, a navy#​23344bturned into a gray#​3a3a3a. In 0.8.2, only a kitty XTVERSION reply turned on 24-bit color. In 0.8.3, whenCOLORTERMdoes not settle the question, the startup queries also ask XTGETTCAPRGBandTc. A positive reply turns on 24-bit color. So does an XTVERSION reply from Ghostty, WezTerm, foot, XTerm, iTerm2, or tmux, because tmux converts 24-bit colors for its client itself. The replies come back through ssh, so this works withoutCOLORTERM. Inside GNU Screen, OpenTUI sends neither query, because Screen drops 24-bit colors and prints the query bodies as text. When nothing answers, the oldTERMrule still applies. Alacritty and mosh answer none of these queries, so they still needCOLORTERM=truecolor.The width method decides how many cells an emoji sequence takes. When OpenTUI picks a different method than the terminal uses, the line overflows or leaves gaps. Before, OpenTUI kept the unicode method in terminals that do not report mode 2027, even though many of them draw a sequence one code point at a time. tmux 3.6 and later draws a sequence as one cluster but got wcwidth. An inherited
TERM_PROGRAM=ghosttyalso forced unicode-wide in other terminals. Now the method comes from one place, with the strongest evidence first:OPENTUI_FORCE_*, also over SSH.TERMwins over an inheritedTERM_PROGRAM.No method matches tmux when
variation-selector-always-wideis off. Unicode is the closest. If the new choice is wrong for your terminal, setOPENTUI_FORCE_UNICODEorOPENTUI_FORCE_WCWIDTH. These settings still win.Before this release, a host that started an unmodified OpenTUI app could not easily make it load a different native build.
setRenderLibPath()needs code, andOTUI_ASSET_ROOTneeds the whole asset tree under one root.OPENTUI_LIB_PATHnames one library file, under both Bun and Node:A relative path resolves against the working directory.
setRenderLibPath()takes precedence over the variable, and the variable takes precedence overOTUI_ASSET_ROOTand the platform package. If the file is missing or does not load, the error names the variable. Core now also checks the context ABI version when it loads a library, so a library built for another context ABI fails at load and not at a later call.A host that embeds a terminal often has to know where the terminal's view is. For example, it can pass an unused wheel step to an outer scroll view or draw a scrollbar. Counting scroll steps does not give the answer. Output and resizes keep the view on its history rows, a scrollback clear jumps to the live screen, and the alternate screen has no history.
EmbeddedTerminalRenderable.getScroll()reads the current view from the emulator, including the moves that the emulator makes on its own:C and Rust hosts get two changes. First, the
@opentui/core-<platform>packages now ship theopentui.hthat their library was built from. Before, a binding that took the library from npm had no matching header. Second,opentui.hnow declares the audio engine. Before, a host could bind it only by copying Zig signatures. WithOT_AUDIO_START_NO_DEVICE, the engine mixes only when the host callsot_audio_mix, so tests can play sounds without a device. Voice IDs now carry a generation. An old ID no longer stops a new sound that reused its slot.Added
EmbeddedTerminalRenderable.getScroll()returns the view'soffsetfrom the live screen, thetotalrows, and thevisiblerows. See Embedded terminal. (#1934)OPENTUI_LIB_PATHnames a native library file. Under Bun and Node, Core loads it instead of theOTUI_ASSET_ROOTcopy or the platform package.setRenderLibPath()takes precedence over the variable. See Environment variables. (#1933)ot_embedded_terminal_scrollbar_getfills anot_embedded_terminal_scrollbarrecord with the offset from the live screen, the total rows, and the visible rows. See Embedded terminal. (#1934)opentui.hdeclares nineot_audio_*functions that address an audio engine byot_handleand returnot_status. With theOT_AUDIO_START_NO_DEVICEflag,ot_audio_startopens no device, and the engine mixes only inot_audio_mix. See C. (#1935)@opentui/core-<platform>packages include theopentui.hthat the library was built from. On Windows, they also includeopentui.lib. See C. (#1932)OT_INPUT_KEY_TYPEDkey flag marks a key whose code is a printable character that the terminal sent as text or as a CSI 27 code. See Keyboard input. (#1919)Changed
COLORTERMdoes not enable 24-bit color, the renderer asks the terminal with XTGETTCAPRGBandTc. A positive reply, or an XTVERSION reply from Ghostty, WezTerm, foot, XTerm, iTerm2, or tmux, enablesrgb, also over SSH. See Terminal capabilities. (#1941)OPENTUI_FORCE_*, the multiplexer, the DECRPM 2027 reply, XTVERSION, and then the environment. Alacritty, xterm, GNOME Terminal, VS Code, and Zellij now get wcwidth, and tmux 3.6 and later gets unicode. See Terminal capabilities. (#1920)unsupported, and the process logs once why each backend failed. The log names a library that did not load, a display that did not connect, or a missing Wayland protocol. See Clipboard. (#1921)Fixed
setMousePointer()no longer hides a visible text cursor. The frame sends only the OSC 22 sequence, and C hosts get the same fix. See Renderer. (#1939)timed-outat its deadline. See Clipboard. (#1923)rawandsequence, so a Textarea no longer drops it. See Keyboard input. (#1915)onResizecall. This happens, for example, when you assignrenderAfter. Abuffered: truenode then resizes its buffer and does not clip its drawing to the old width. See Renderables. (#1918)stopVoice()with the ID of a voice that ended no longer stops a newer sound. Voice IDs now carry a generation. See Audio. (#1935)API changes and documentation: https://opentui.com/docs/releases/0.8.3
What's Changed
Full Changelog: anomalyco/opentui@v0.8.2...v0.8.3
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.