OpenTUI 0.6.0
OpenTUI 0.5 kept the renderable tree in JavaScript. On each frame, JavaScript
walked the tree and read each node’s position back from Yoga. It then made one
native call for each draw, so the cost of a frame grew with the number of
nodes and draws. In 0.6.0, native code owns the tree. Each Renderable has a
node in a native scene, which holds the node’s Yoga node and paint state.
Layout and paint setters stage their changes, and Core sends all staged
changes to native code in one call before each frame step. Native code then
lays out, clips, and paints the scene and fills the hit grid. It draws most
built-in renderables without a call to JavaScript. When no visible node has a
JavaScript hook, one native frame step lays out and paints the whole frame.
Rendering pipeline follows a
complete frame.
The built-in renderables and the React and Solid bindings keep their option
names, but a few option values now throw, such as enableLayout: false.
Custom renderables may need a little work. Renderable no longer has
render(), getLayoutNode(), or a protected yogaNode. Draw in
renderSelf(), renderBefore, or renderAfter, and report content size with
setMeasureProvider(). Paint hooks also work differently. A hook of an
unbuffered renderable now receives a recording buffer: OpenTUI stores the
hook’s draw calls, and native code plays them back at the node’s place in
paint order. Painting never stops to call JavaScript, so a hook cannot tear
the frame. But a hook can no longer read the frame’s cells. To read cells, a
hook must draw into a buffer that the renderable owns and compose that
buffer, or the work must move to a post-process function. With
buffered: true, the hooks draw into such a buffer, and OpenTUI composes it.
Custom renderables shows a complete
example.
Native rendering resources now belong to one owner, a native Context.
Buffers, text buffers, views, syntax styles, images, and scene nodes cross the
native boundary as generational handles instead of raw pointers. A stale
handle fails with an error instead of touching freed memory, and destroying a
Context releases everything that it owns. The factories that used to create
resources without an owner now take one. For a resource that a renderer
draws, pass renderer.nativeScene:
// 0.5: SyntaxStyle.fromStyles(styles)
const syntaxStyle = SyntaxStyle.fromStyles(styles, renderer.nativeScene)
// 0.5: OptimizedBuffer.create(40, 10, "unicode")
const buffer = OptimizedBuffer.create(40, 10, "unicode", {
owner: renderer.nativeScene,
})
Image factories take only a ResourceContext as their owner. For the
renderer’s Context, pass renderer.nativeScene.resourceContext. Without a
renderer, create a Context with
new ResourceContext({ objectCapacity, renderCellsMax }), and call its
destroy() method when you are done. objectCapacity is the initial number
of object slots, and renderCellsMax limits the cells in each buffer.
API and symbol index lists each removed or
changed API with its replacement.
Terminal transitions are now asynchronous. suspend() and resume() return
promises. destroy() still returns at once, but the terminal restoration and
the remaining output finish later. Before you reuse the streams, or before a
deliberate exit, await renderer.closed:
await renderer.suspend()
// Run an editor or a shell in the terminal.
await renderer.resume()
renderer.destroy()
await renderer.closed
The native library now has a C interface. opentui.h declares a C ABI of
ot_* functions, and the opentui Zig module gains the same Context, scene,
and Session model. A C or Zig program can build a scene and write frames with
no JavaScript runtime. The ABI is experimental, so use the header, library,
and bindings from the same revision.
Native rendering starts with a box and a label.
One fix changes colors in some SSH sessions. Inside an SSH or mosh login,
OpenTUI detects remote mode automatically. In that mode, it used to stop
reading the environment before it read TERM and COLORTERM. As a result,
every remote terminal got truecolor output, and a 256-color terminal such as
GNU screen 4.x showed the UI without color. OpenTUI now reads these two keys.
This has a cost. A truecolor terminal that reaches the server with
TERM=xterm-256color and no COLORTERM used to get exact colors by accident.
Examples are iTerm2 and WezTerm over a stock macOS ssh client, which does not
forward COLORTERM. They now get 256-color approximations. A Kitty XTVERSION
reply still turns on truecolor. To keep truecolor in other terminals, export
COLORTERM=truecolor on the server, forward it with SendEnv COLORTERM and
AcceptEnv COLORTERM, or pass it in the renderer’s environment option.
Breaking changes
- core:
Renderable.render(),updateLayout(),updateFromLayout(),canReuseRenderCommandList(),getLayoutNode(), the protectedyogaNode, theRenderCommandtype, andRootRenderable.calculateLayout()are removed. Draw inrenderSelf(),renderBefore, orrenderAfter, and usesetMeasureProvider(),invalidateIntrinsicSize(), andgetLayout()for size and layout. Protected members such as_x,_y,getScissorRect(), and_getVisibleChildren()are also removed. Usex,y,screenX, andscreenY, and theviewportCullingoption ofScrollBox. See Custom renderables. (#1479) - core: The
enableLayout: falseoption throws.on("resized")andon("layout-changed")throw on a renderable that is not the root, where these listeners never ran. UseonSizeChangeinstead. See Layout. (#1479) - core: Paint hooks of an unbuffered renderable get a recording buffer
that cannot read cells, and
renderer.nextRenderBufferaccepts drawing only in a post-process function.buffer.buffersworks only in a post-process function. Elsewhere, usebuffer.withBuffers(callback). To read or change cells in a hook, setbuffered: true, or draw into a buffer that you own and compose it. For the whole frame, use a post-process function. See Rendering pipeline. (#1479) - core:
addToHitGrid(),pushHitGridScissorRect(),popHitGridScissorRect(), andclearHitGridScissorRects()are removed fromCliRendererandRenderContext. Native code adds a hit area for each visible node, andrenderer.hitTest(x, y)queries the hit grid. A customRenderContextmust implementnativeScene,requestAnimationFrame(), andcancelAnimationFrame(). See Interaction, focus, and selection. (#1479) - core:
OptimizedBuffer.create(),TextBuffer.create(),EditBuffer.create(),SyntaxStyle.create(),SyntaxStyle.fromStyles(), andSyntaxStyle.fromTheme()require an owner, and theptrproperties of buffers, views, and styles are removed. Passrenderer.nativeScene, or aResourceContextwhen no renderer exists. Resources from different owners cannot be used together, and the resources that a renderer owns stop working when the renderer is destroyed. See How Core uses native. (#1479) - core:
suspend()andresume()return aPromise<void>, anddestroy()restores the terminal asynchronously. Await the transitions, and awaitrenderer.closedbefore you reuse the streams. Both methods throw while another transition is pending, and when the terminal is not set up, for example on a test renderer or afterdestroy(). See Lifecycle and cleanup. (#1479) - core: The
useThreadoption,renderer.useThread,renderer.rendererPtr,dumpBuffers(),dumpOutputBuffer(), and theOTUI_NO_NATIVE_RENDERenvironment variable are removed. RemoveuseThread. Instead ofdumpBuffers(), use test frame capture orrenderer.currentRenderBuffer.withBuffers(). Instead ofdumpOutputBuffer(), give the renderer a customstdout. Instead ofOTUI_NO_NATIVE_RENDER, usecreateTestRenderer(). See Rendering diagnostics. (#1479) - core: The
Clipboardclass is removed. Userenderer.copyToClipboardOSC52()andrenderer.clearClipboardOSC52(), orcreateClipboard()withcreateHostClipboard()andcreateRendererClipboardAdapter(renderer). See Clipboard. (#1479) - core: OpenTUI no longer installs a process-global
requestAnimationFrame,cancelAnimationFrame, orwindow. Userenderer.requestAnimationFrame()andrenderer.cancelAnimationFrame(). See Animation and Timeline. (#1479) - core: After
destroy(), renderable constructors, the timelineengine.attach(), and most renderer methods throw, for examplesetTerminalTitle(),copyToClipboardOSC52(),getStats(), andhitTest().requestRender()andresize()do nothing. Checkrenderer.isDestroyedfirst. See Lifecycle and cleanup. (#1479) - core: When the output stream emits
error, or closes or finishes before the renderer closes it, the renderer destroys itself andrenderer.closedrejects. Handle the rejection ofclosed. See Lifecycle and cleanup. (#1479) - core: Drawing methods throw
RangeErrorfor fractional,NaN, or infinite coordinates and sizes.drawText()and box titles throwRangeErrorfor text larger than 64 KiB of UTF-8.setCell(),setCellWithAlphaBlending(),drawChar(), anddrawText()throwNativeErrorfor attribute bits 8 to 31. In a paint hook, the frame fails instead. See Buffer API. (#1479) - core:
EditBuffer.setText(),insertText(),insertChar(), andreplaceText(), the same Textarea and Input methods, TextareainitialValue,Input.value, and bothplaceholderoptions throwNativeErrorfor control characters other than tab, carriage return, and line feed. DEL and C1 control characters also throw. Remove these characters first. See Editing buffers and views. (#1479) - core: The minimum Bun version is 1.3.14 (was 1.3.0), the oldest version that CI tests. Bun 1.3.0 to 1.3.3 pass some FFI pointer arguments as wrong addresses, Bun 1.3.4 to 1.3.6 can crash after a Worker exits, and Bun 1.3.7 can hang while it loads modules. See Runtime and platform support. (#1479)
- core: The pointer-based
RenderLibmethods, such ascreateRendererandbufferDrawText, and the handle types, such asRendererHandleandOptimizedBufferHandle, are removed. Use the public classes and theContext*Handle,SessionHandle, andSceneNodeHandletypes. See How Core uses native. (#1479) - core: Standalone
YogathrowsYogaErrorfor invalid arguments, andConfig.free()throws while nodes from that config remain. Measure and dirtied functions must return synchronously and must not change Yoga nodes. See Yoga API. (#1479) - ssh:
session.write()can throwOutputPressureErrororRangeError.colsandrowshold the requested size until the renderer attaches, andonCloseruns at logical close, before the renderer finishes closing. See SSH. (#1479) - native: The legacy native exports, such as
createRendererandbufferDrawText, are removed. Use theot_*functions inopentui.h. In Zig, the global grapheme and link pools are removed, soOptimizedBuffer.init()andCliRenderer.create()require alink_pool.GraphemePool.acquire()andLinkPool.acquire()replacealloc(). They return an ID that holds one reference, whichdecref()releases. See C and Zig. (#1479)
Added
- core:
renderer.requestAnimationFrame()andrenderer.cancelAnimationFrame()schedule one-shot frame callbacks for one renderer.getTimelineEngine(renderer)andcreateTimeline(options, renderer)give each renderer its own timeline engine. See Animation and Timeline. (#1479) - core:
renderer.closedresolves after destruction writes the remaining output and native teardown finishes. It rejects when the output fails or does not finish within one second. See Lifecycle and cleanup. (#1479) - core:
renderer.requestResize(width, height)debounces size changes from a custom terminal and applies only the latest size. See Renderer. (#1479) - core: The
nativeSceneWorkBudgetoption lets a frame yield to the event loop during preparation. Painting still runs in one native call. See Renderer. (#1479) - core: The
environmentoption gives terminal environment values to one renderer, for example{ TERM: pty.term }from an SSH client. These values replace theforwardEnvKeysvalues with the same names. In an automatically detected SSH login, onlyTERMandCOLORTERMtake effect unless you setremote: true. See Terminal capabilities. (#1603) - core:
ResourceContextowns native resources without a renderer, andNativeErrorreports a failed native call with itsoperationandstatus. Image factories accept aResourceContextin theirowneroption, such asrenderer.nativeScene.resourceContext. See How Core uses native and NativeImage. (#1479) - core: Custom renderables get
setMeasureProvider(),invalidateIntrinsicSize(),getLayout(),refreshHooks(), anddefineNativeIntegration().TextRenderableandCodeRenderablegetdrawToBuffer(), andOptimizedBuffergetswithBuffers()for scoped cell access. See Custom renderables. (#1479) - core:
TestRendererSetup.dispose()and[Symbol.asyncDispose]()destroy the test renderer and wait forrenderer.closed.ManualClock.pendingTimerCountcounts the scheduled timeouts and active intervals. See Testing. (#1479) - native:
opentui.hdeclares an experimental C ABI, and theopentuiZig module gains the same Context, scene, and Session model. A Context’s object table starts atobject_capacityslots and doubles when it is full, up to 4,194,304 slots orobject_capacity, whichever is larger. Past that limit, object creation fails withOT_OBJECT_LIMIT. See Native rendering. (#1479, #1622) - native: Terminology gets OSC 8 hyperlinks and OSC 777 notifications when its XTVERSION reply names it. See Terminal capabilities. (#1566)
- ssh: The server accepts
COLORTERM,TERM_PROGRAM, andTERM_PROGRAM_VERSIONenv requests that arrive before the shell request, with values of at most 256 bytes. It rejects other keys. The renderer gets these values with the client’s PTYTERM, so capability detection sees the client’s color depth and hyperlink support, and GNU Screen or tmux from theTERMprefix. A client withTERM=xterm-256colorand noCOLORTERMnow gets 256-color output instead of truecolor. To keep truecolor, addSendEnv COLORTERMto the client’s ssh configuration. See SSH. (#1603)
Changed
- core: Native code lays out, culls, and paints the scene and fills the hit grid, so JavaScript no longer walks the tree on each frame. JavaScript work in a frame now grows with changes and hooks, not with the number of renderables. Some built-in renderables, such as Select and ScrollBox, still run JavaScript hooks. See Rendering pipeline. (#1479)
- native: Text buffers build rope slices in one allocation. Setting and appending text use less time and memory. See Editing buffers and views. (#1582)
- native: Buffers write cells that are not grapheme clusters on a faster
path, and
drawText()writes printable ASCII without copying it. See Buffer API. (#1591) - core:
EmbeddedTerminalRenderableencodesmetaas Alt, and onlysuperencodes as Super. Core’s key parser setsmetafor Alt, so Alt+b now reaches a legacy child asESC b, notb. On macOS, an Alt modifier reaches the child as Alt, because the host terminal already applied its Option setting. See Embedded terminal. (#1594, 1b25377b6, f0d7d1d3b, be14991e6) - react:
root.render()does nothing when the renderer is destroyed, for example afterexitOnCtrlC. See React bindings. (#1604) - solid:
render()does not mount when the renderer is destroyed, for example afterexitOnCtrlC. See Solid bindings. (#1604)
Fixed
- native: In an SSH or mosh login, automatically detected remote mode
reads the color depth from
TERMandCOLORTERM. A 256-color terminal such as GNU screen 4.x gets 256-color output instead of truecolor that it cannot show. See Terminal capabilities. (#1624) - core: In split-footer mode, a write that continues a scrollback row no longer loses or overwrites a wide character at the end of the row. Tabs in captured stdout count from the start of the terminal row and stop at the last column. See Renderer. (#1597, #1617)
- native: In split-footer mode, a scrollback row that fills the terminal width keeps its last cell. Output no longer erases the footer when fewer than two rows remain above it, for example with the default footer in a terminal of 13 rows or fewer. See Renderer. (#1581, #1618)
- native: A highlight at the end of a line no longer colors text that an
append, insert, or undo adds to that line later.
setText()andreplaceText()drop highlights on lines past the new line count, sogetHighlightCount()andgetLineHighlights()no longer report them. See Editing buffers and views. (#1621, #1601) - native: Up and Down move the cursor to the start of a wide character or
tab, not inside it. This applies to
EditBuffer.moveCursorUp()andmoveCursorDown(),EditorView.moveUpVisual()andmoveDownVisual(), the Textarea arrow keys, andEditorView.setViewport()withmoveCursor. See Textarea. (#1596) - native: Down does nothing in an empty Textarea while it shows a
placeholder of more than one row. The next edit no longer fails with
InvalidArgument. See Textarea. (#1619) - native: A width change in word-wrap mode releases the layout memory of a narrower wrap. Before this fix, a 94 KiB text wrapped at width 1 and then at width 80 kept about 46 MB. See Text. (#1602)
- core: Key bindings use the Kitty base-layout key only when the typed key
is one non-ASCII character. On Dvorak, Ctrl+J no longer matches
exitOnCtrlC, and Ctrl+ㅊ still matches Ctrl+C. See Keyboard input. (#1599) - core:
.tsxfiles andtsxMarkdown fences use the tree-sitter TSX grammar through a separatetypescriptreactparser. JSX closing tags no longer highlight as regular expressions. See Syntax highlighting with Tree-sitter. (#1598) - core: The tree-sitter worker changes
#lua-match?predicates to#match?in bundled and registered queries when it can translate the pattern. TypeScript and Zig identifiers no longer all get thetypeandconstantcaptures. See Syntax highlighting with Tree-sitter. (#1620) - core:
EmbeddedTerminalRenderablesends F1 to F12 with or without modifiers, keys that the host terminal sends in SS3 form, and the keypad Begin key. It sends F13 to F25 to a child in Kitty keyboard mode. See Embedded terminal. (#1616) - native: The embedded terminal answers OSC 10, 11, and 12 and Kitty OSC 21 color queries, and it applies an OSC 10 or OSC 11 that sets only one default color. OSC 110 resets the foreground to white, and OSC 111 resets the background to black. See Embedded terminal. (#1615)
- native: The embedded terminal answers Primary, Secondary, and Tertiary Device Attributes queries. fish 4.1 and later no longer stall for about two seconds at startup. See Embedded terminal. (#1595)
API changes#
@opentui/core#
Added
class FFIRenderLibclass NativeError extends Errorclass NativeSessionclass ResourceContext implements NativeResourceOwnerclass Yoga.YogaError extends Errorconst NATIVE_BUFFER_TEXT_BYTES_MAX: 65536const NATIVE_EDGE_NONE: 0const NATIVE_SESSION_CONTROL_PACKET_BYTES: 4096constructor FFIRenderLib(libPath?: string)constructor NativeError(operation: string, status: NativeStatus)constructor NativeSession(sink: Writable, options?: NativeSessionDriverOptions, owner?: NativeSession | undefined)constructor ResourceContext(options: NativeContextOptions)constructor Yoga.YogaError(operation: string, status: YogaStatus)enum NativeBorderenum NativeEditCommandenum NativeEditEventenum NativeEditHighlightOperationenum NativeEditPositionQueryenum NativeEditorCommandenum NativeEditorPositionQueryenum NativeEditorSelectionOperationenum NativeEditorStyleMaskenum NativeSceneFrameenum NativeSceneHookenum NativeScenePaintPhaseenum NativeSessionPumpStatusenum NativeSessionRenderStatusenum NativeSessionStateenum NativeSessionTerminalPhaseenum NativeStatusenum NativeTextViewCommandenum Yoga.YogaStatusenum-member Yoga.YogaStatus.Busy = 5enum-member Yoga.YogaStatus.DepthLimit = 6enum-member Yoga.YogaStatus.Exception = 3enum-member Yoga.YogaStatus.InvalidArgument = 1enum-member Yoga.YogaStatus.Ok = 0enum-member Yoga.YogaStatus.OutOfMemory = 2enum-member Yoga.YogaStatus.Poisoned = 4function acquireSessionBufferLease(lib: RenderLib, context: NativeContextHandle, session: SessionHandle, which: SessionBuffer, frame?: NativeSceneFrameRequest | null): NativeContextBufferLeasefunction getTimelineEngine(renderer: CliRenderer): TimelineEngineinterface BufferAccessinterface ContextObjectHandleinterface EncodedUnicodeinterface ImageCreateOptionsinterface NativeBufferGridinterface NativeBufferStackinterface NativeContextBufferOptionsinterface NativeContextEditBufferOptionsinterface NativeContextImageDrawinterface NativeContextOptionsinterface NativeEditBufferInfointerface NativeEditorReplacementinterface NativeEditorSelectioninterface NativeEditorStyleinterface NativeEditorViewInfointerface NativeEditorViewportinterface NativeEncodedStyledTextinterface NativeOutputTicketinterface NativeRenderableIntegrationinterface NativeResourceOwnerinterface NativeSceneArrowOptionsinterface NativeSceneBoxDetailsinterface NativeSceneEditorOptionsinterface NativeSceneFrameOptionsinterface NativeSceneFrameRequestinterface NativeSceneLayoutinterface NativeScenePaintinterface NativeScenePaintSlotinterface NativeSceneSliderOptionsinterface NativeSceneTextMetricsinterface NativeSceneTextOptionsinterface NativeSceneTextSelectionOptionsinterface NativeSessionBufferLeaseinterface NativeSessionCapabilities extends TerminalCapabilitiesinterface NativeSessionCursorOptions extends CursorStyleOptionsinterface NativeSessionDriverOptionsinterface NativeSessionKittyImageTransportStatusinterface NativeSessionOptionsinterface NativeSessionPumpResultinterface NativeSessionRendererOptionsinterface NativeSessionRendererStateinterface NativeSessionSchedulerinterface NativeSessionTerminalOptionsinterface NativeSplitSnapshotinterface NativeTextBufferInfoprotected method BoxRenderable.getNativeScenePaint(): NativeScenePaintmethod CliRenderer.cancelAnimationFrame(handle: number): voidmethod CliRenderer.hasFrameCallback(callback: (deltaTime: number) => Promise<void>): booleanmethod CliRenderer.requestAnimationFrame(callback: FrameRequestCallback): numbermethod CliRenderer.requestResize(width: number, height: number): voidprotected method CodeRenderable.destroyOwnedResources(): voidprotected method CodeRenderable.onUpdate(deltaTime: number): voidmethod DiffRenderable.destroyRecursively(): voidmethod EditBuffer.runMutation<T>(operation: () => T): Tprotected method EditBufferRenderable.destroyOwnedResources(): voidprotected method EmbeddedTerminalRenderable._invokeNativePaint(buffer: OptimizedBuffer, deltaTime: number): voidprotected method ImageRenderable.createFrameBuffer(): voidprotected method LineNumberRenderable.destroySelf(): voidstatic method OptimizedBuffer.fromSession(lib: RenderLib, context: NativeContextHandle, session: SessionHandle, which: SessionBuffer, getFrame?: () => NativeSceneFrameRequest | null): OptimizedBuffermethod OptimizedBuffer.withBuffers<T>(callback: (cells: BufferAccess) => T): Tprotected method Renderable._invokeNativePaint(buffer: OptimizedBuffer, deltaTime: number): voidprotected method Renderable.abortConstruction(error: unknown, cleanup?: (run: (step: () => void) => void) => void): nevermethod Renderable.addListener(event: string | symbol, listener: (...args: any[]) => void): thismethod Renderable.assertMutable(): voidprotected method Renderable.assignOptions(target: Renderable, options: object | undefined): voidstatic protected method Renderable.defineNativeIntegration(integration: NativeRenderableIntegration): NativeRenderableIntegrationprotected method Renderable.destroyOwnedResources(): voidmethod Renderable.getComputedLayout(): Layoutmethod Renderable.getLayout(): Readonly<Layout>method Renderable.getMargin(edge: Edge): Valueprotected method Renderable.getNativeScenePaint(): NativeScenePaintmethod Renderable.getWidth(): Valuemethod Renderable.invalidateIntrinsicSize(): voidmethod Renderable.isFreed(): booleanmethod Renderable.off(event: string | symbol, listener: (...args: any[]) => void): thismethod Renderable.on(event: string | symbol, listener: (...args: any[]) => void): thisprotected method Renderable.onLiveCountChanged(previous: number): voidmethod Renderable.prependListener(event: string | symbol, listener: (...args: any[]) => void): thismethod Renderable.refreshHooks(): voidprotected method Renderable.refreshNativeSceneHooks(): voidmethod Renderable.removeAllListeners(event?: string | symbol): thismethod Renderable.removeListener(event: string | symbol, listener: (...args: any[]) => void): thisprotected method Renderable.rollbackConstruction(error: unknown): neverprotected method Renderable.runCleanup(steps: (run: (step: () => void) => void) => void): voidmethod Renderable.runMutation<T>(operation: () => T): Tprotected method Renderable.setGap(gutter: Gutter, gap: number | `${number}%` | undefined): voidmethod Renderable.setMeasureProvider(provider: MeasureFunction | null): voidprotected method Renderable.setNativeScenePaint(paint?: Partial<NativeScenePaint>): voidprotected method RootRenderable.onLiveCountChanged(previous: number): voidprotected method ScrollBarRenderable.destroyOwnedResources(): voidprotected method TextBufferRenderable.destroyOwnedResources(): voidmethod TextBufferRenderable.drawToBuffer(buffer: OptimizedBuffer, x: number, y: number): voidprotected method TextNodeRenderable.markDirty(): voidprotected method TextRenderable.destroyOwnedResources(): voidmethod TextRenderable.requestRender(): voidmethod Yoga.Config.assertAlive(): voidmethod Yoga.Config.assertUnused(): voidmethod Yoga.Config.ensureCallbacks(): voidstatic method Yoga.Config.fromBorrowedPointer(ptr: Pointer, renderLib?: RenderLib): Configmethod Yoga.Node.assertMutable(): voidmethod Yoga.Node.runMutation<T>(operation: () => T): Tstatic readonly property ArrowRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property BoxRenderable.nativeIntegration: NativeRenderableIntegrationreadonly property CliRenderer.clock: Clockreadonly property CliRenderer.closed: Promise<void>readonly property CliRenderer.lastSceneTimeMs: numberreadonly property CliRenderer.nativeScene: NativeSceneproperty CliRendererConfig.environment?: Readonly<Record<string, string>>property CliRendererConfig.nativeSceneWorkBudget?: numberproperty CliRendererConfig.nativeSession?: NativeSessionstatic readonly property CodeRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property DiffRenderable.nativeIntegration: NativeRenderableIntegrationstatic protected readonly property EditBufferRenderable.defaultFocusable = truestatic readonly property EditBufferRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property EmbeddedTerminalRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property FrameBufferRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property ImageRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property MarkdownRenderable.nativeIntegration: NativeRenderableIntegrationproperty RenderContext.cancelAnimationFrame: (handle: number) => voidreadonly property RenderContext.nativeScene: NativeSceneproperty RenderContext.requestAnimationFrame: (callback: FrameRequestCallback) => numberprotected property Renderable._nativeSceneHookGeneration: bigintprotected property Renderable._zIndex: numberstatic protected readonly property Renderable.defaultFocusable: booleanstatic readonly property Renderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property RootRenderable.nativeIntegration: NativeRenderableIntegrationstatic protected readonly property ScrollBarRenderable.defaultFocusable = truestatic readonly property ScrollBarRenderable.nativeIntegration: NativeRenderableIntegrationstatic protected readonly property ScrollBoxRenderable.defaultFocusable = truestatic readonly property ScrollBoxRenderable.nativeIntegration: NativeRenderableIntegrationstatic protected readonly property SelectRenderable.defaultFocusable = truestatic readonly property SliderRenderable.nativeIntegration: NativeRenderableIntegrationstatic protected readonly property TabSelectRenderable.defaultFocusable = truestatic readonly property TextBufferRenderable.nativeIntegration: NativeRenderableIntegrationstatic readonly property TextRenderable.nativeIntegration: NativeRenderableIntegrationreadonly property Yoga.Config.dirtied: Map<Pointer, { node: Node; callback: DirtiedFunction; }>readonly property Yoga.Config.measures: Map<Pointer, MeasureFunction>readonly property Yoga.Config.nodes: Map<Pointer, Node>readonly property Yoga.Config.renderLib: RenderLibreadonly property Yoga.YogaError.name = "YogaError"readonly property Yoga.YogaError.operation: stringreadonly property Yoga.YogaError.status: YogaStatustype ContextBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "buffer"; }type ContextEditBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "edit_buffer"; }type ContextEditorViewHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "editor_view"; }type ContextEmbeddedTerminalHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "embedded_terminal"; }type ContextImageHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "image"; }type ContextImagePixelsHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "image_pixels"; }type ContextSyntaxStyleHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "syntax_style"; }type ContextTextBufferHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "text_buffer"; }type ContextTextBufferViewHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "text_buffer_view"; }type ContextUnicodeHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "unicode"; }type NativeBufferDraw = { operation: "clear"; background?: RGBA; } | (BufferDrawPosition & { operation: "fill"; width?: number; height?: number; background?: RGBA; }) | (BufferDrawPosition & BufferDrawColors & { operation: "text"; text?: string; attributes?: number; }) | (BufferDrawPosition & BufferDrawColors & { operation: "cell" | "cellBlend" | "char"; char?: number; attributes?: number; }) | (BufferDrawPosition & BufferDrawColors & { operation: "box"; width?: number; height?: number; titleColor?: RGBA; packedOptions?: number; borderChars?: Uint32Array; text?: string; bottomTitle?: string; }) | (BufferDrawPosition & { operation: "compose"; source: ContextBufferHandle; sourceX?: number; sourceY?: number; sourceWidth?: number; sourceHeight?: number; }) | { operation: "respectAlpha"; enabled: boolean; }type NativeContextBufferLease = NativeSessionBufferLeasetype NativeContextHandle = { readonly [nativeContextBrand]: true; }type NativeDrawingTarget = { readonly context: NativeContextHandle; readonly target: ContextBufferHandle; readonly frame: null; } | { readonly context: NativeContextHandle; readonly target: SessionHandle; readonly frame: NativeSceneFrameRequest; }type NativeEditEventName = "cursor-changed" | "content-changed" | "cursorChanged"type NativeScenePaintUpdate = Partial<NativeScenePaint> & { resetBorderCharacters?: true; }type NativeSessionControl = { kind: "capability-response"; bytes: Uint8Array; } | { kind: "palette-query"; bytes: Uint8Array; } | { kind: "title"; title: string; } | { kind: "mouse"; mode: "disabled" | "drag" | "motion"; } | { kind: "kitty-keyboard-flags"; flags: number; } | { kind: "restore-modes" | "query-pixel-resolution" | "query-theme-colors" | "reset-background"; }type NativeSessionSplitControl = { kind: "reset"; seedRows: number; pinnedRenderOffset: number; } | { kind: "sync"; pinnedRenderOffset: number; } | { kind: "output-offset"; surfaceOffset: number; } | { kind: "render-offset"; renderOffset: number; } | { kind: "transition"; mode: "viewport-scroll" | "clear-stale-rows"; sourceTopLine: number; sourceHeight: number; targetTopLine: number; targetHeight: number; scrollLines?: number; } | { kind: "clear-transition"; }type RenderLib = Pick<FFIRenderLib, keyof FFIRenderLib>type SceneNodeHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "scene_node"; }type SessionBuffer = "current" | "next"type SessionHandle = ContextObjectHandle & { readonly [contextResourceBrand]: "session"; }
Changed
constructor EditBuffer(lib: RenderLib, ptr: EditBufferHandle)constructor EditBuffer(lib: RenderLib, handle: ContextEditBufferHandle, source: NativeResourceOwner)constructor EditorView(lib: RenderLib, ptr: EditorViewHandle, editBuffer: EditBuffer)constructor EditorView(lib: RenderLib, handle: ContextEditorViewHandle, editBuffer: EditBuffer, source: NativeResourceOwner)constructor SyntaxStyle(lib: RenderLib, ptr: SyntaxStyleHandle)constructor SyntaxStyle(lib: RenderLib, handle: ContextSyntaxStyleHandle, source: NativeResourceOwner)constructor TextBuffer(lib: RenderLib, ptr: TextBufferHandle)constructor TextBuffer(lib: RenderLib, handle: ContextTextBufferHandle, source: NativeResourceOwner)constructor TextBufferRenderable(ctx: RenderContext, options: TextBufferOptions)constructor TextBufferRenderable(ctx: RenderContext, options: TextBufferOptions, sharedText?: boolean)constructor TextBufferView(lib: RenderLib, ptr: TextBufferViewHandle, textBuffer: TextBuffer)constructor TextBufferView(lib: RenderLib, handle: ContextTextBufferViewHandle, textBuffer: TextBuffer, source: NativeResourceOwner)enum-member NativeClipboardCancelStatus.AlreadyTerminal = 1enum-member NativeClipboardCancelStatus.AlreadyTerminalenum-member NativeClipboardCancelStatus.InvalidHandle = 2enum-member NativeClipboardCancelStatus.InvalidHandleenum-member NativeClipboardCancelStatus.Requested = 0enum-member NativeClipboardCancelStatus.Requestedenum-member NativeClipboardCopyStatus.BufferTooSmall = 1enum-member NativeClipboardCopyStatus.BufferTooSmallenum-member NativeClipboardCopyStatus.InvalidArgument = 4enum-member NativeClipboardCopyStatus.InvalidArgumentenum-member NativeClipboardCopyStatus.InvalidHandle = 2enum-member NativeClipboardCopyStatus.InvalidHandleenum-member NativeClipboardCopyStatus.InvalidState = 3enum-member NativeClipboardCopyStatus.InvalidStateenum-member NativeClipboardCopyStatus.Ok = 0enum-member NativeClipboardCopyStatus.Okenum-member NativeClipboardDestroyStatus.Destroyed = 0enum-member NativeClipboardDestroyStatus.Destroyedenum-member NativeClipboardDestroyStatus.InvalidHandle = 2enum-member NativeClipboardDestroyStatus.InvalidHandleenum-member NativeClipboardDestroyStatus.NotReady = 1enum-member NativeClipboardDestroyStatus.NotReadyenum-member NativeClipboardOperationStatus.Cancelled = 6enum-member NativeClipboardOperationStatus.Cancelledenum-member NativeClipboardOperationStatus.Cleared = 4enum-member NativeClipboardOperationStatus.Clearedenum-member NativeClipboardOperationStatus.Empty = 2enum-member NativeClipboardOperationStatus.Emptyenum-member NativeClipboardOperationStatus.Failed = 9enum-member NativeClipboardOperationStatus.Failedenum-member NativeClipboardOperationStatus.InvalidHandle = 10enum-member NativeClipboardOperationStatus.InvalidHandleenum-member NativeClipboardOperationStatus.LimitExceeded = 8enum-member NativeClipboardOperationStatus.LimitExceededenum-member NativeClipboardOperationStatus.Pending = 0enum-member NativeClipboardOperationStatus.Pendingenum-member NativeClipboardOperationStatus.Read = 1enum-member NativeClipboardOperationStatus.Readenum-member NativeClipboardOperationStatus.TimedOut = 7enum-member NativeClipboardOperationStatus.TimedOutenum-member NativeClipboardOperationStatus.Unsupported = 5enum-member NativeClipboardOperationStatus.Unsupportedenum-member NativeClipboardOperationStatus.Written = 3enum-member NativeClipboardOperationStatus.Writtenenum-member NativeClipboardShutdownStatus.InvalidHandle = 2enum-member NativeClipboardShutdownStatus.InvalidHandleenum-member NativeClipboardShutdownStatus.Pending = 0enum-member NativeClipboardShutdownStatus.Pendingenum-member NativeClipboardShutdownStatus.Ready = 1enum-member NativeClipboardShutdownStatus.Readyenum-member NativeClipboardStartStatus.InvalidArgument = 4enum-member NativeClipboardStartStatus.InvalidArgumentenum-member NativeClipboardStartStatus.InvalidService = 1enum-member NativeClipboardStartStatus.InvalidServiceenum-member NativeClipboardStartStatus.LimitExceeded = 3enum-member NativeClipboardStartStatus.LimitExceededenum-member NativeClipboardStartStatus.Ok = 0enum-member NativeClipboardStartStatus.Okenum-member NativeClipboardStartStatus.OutOfMemory = 5enum-member NativeClipboardStartStatus.OutOfMemoryenum-member NativeClipboardStartStatus.ShuttingDown = 2enum-member NativeClipboardStartStatus.ShuttingDownenum-member Yoga.Align.Auto = 0enum-member Yoga.Align.Autoenum-member Yoga.Align.Baseline = 5enum-member Yoga.Align.Baselineenum-member Yoga.Align.Center = 2enum-member Yoga.Align.Centerenum-member Yoga.Align.FlexEnd = 3enum-member Yoga.Align.FlexEndenum-member Yoga.Align.FlexStart = 1enum-member Yoga.Align.FlexStartenum-member Yoga.Align.SpaceAround = 7enum-member Yoga.Align.SpaceAroundenum-member Yoga.Align.SpaceBetween = 6enum-member Yoga.Align.SpaceBetweenenum-member Yoga.Align.SpaceEvenly = 8enum-member Yoga.Align.SpaceEvenlyenum-member Yoga.Align.Stretch = 4enum-member Yoga.Align.Stretchenum-member Yoga.BoxSizing.BorderBox = 0enum-member Yoga.BoxSizing.BorderBoxenum-member Yoga.BoxSizing.ContentBox = 1enum-member Yoga.BoxSizing.ContentBoxenum-member Yoga.Dimension.Height = 1enum-member Yoga.Dimension.Heightenum-member Yoga.Dimension.Width = 0enum-member Yoga.Dimension.Widthenum-member Yoga.Direction.Inherit = 0enum-member Yoga.Direction.Inheritenum-member Yoga.Direction.LTR = 1enum-member Yoga.Direction.LTRenum-member Yoga.Direction.RTL = 2enum-member Yoga.Direction.RTLenum-member Yoga.Edge.All = 8enum-member Yoga.Edge.Allenum-member Yoga.Edge.Bottom = 3enum-member Yoga.Edge.Bottomenum-member Yoga.Edge.End = 5enum-member Yoga.Edge.Endenum-member Yoga.Edge.Horizontal = 6enum-member Yoga.Edge.Horizontalenum-member Yoga.Edge.Left = 0enum-member Yoga.Edge.Leftenum-member Yoga.Edge.Right = 2enum-member Yoga.Edge.Rightenum-member Yoga.Edge.Start = 4enum-member Yoga.Edge.Startenum-member Yoga.Edge.Top = 1enum-member Yoga.Edge.Topenum-member Yoga.Edge.Vertical = 7enum-member Yoga.Edge.Verticalenum-member Yoga.FlexDirection.Column = 0enum-member Yoga.FlexDirection.Columnenum-member Yoga.FlexDirection.ColumnReverse = 1enum-member Yoga.FlexDirection.ColumnReverseenum-member Yoga.FlexDirection.Row = 2enum-member Yoga.FlexDirection.Rowenum-member Yoga.FlexDirection.RowReverse = 3enum-member Yoga.FlexDirection.RowReverseenum-member Yoga.Gutter.All = 2enum-member Yoga.Gutter.Allenum-member Yoga.Gutter.Column = 0enum-member Yoga.Gutter.Columnenum-member Yoga.Gutter.Row = 1enum-member Yoga.Gutter.Rowenum-member Yoga.Justify.Center = 1enum-member Yoga.Justify.Centerenum-member Yoga.Justify.FlexEnd = 2enum-member Yoga.Justify.FlexEndenum-member Yoga.Justify.FlexStart = 0enum-member Yoga.Justify.FlexStartenum-member Yoga.Justify.SpaceAround = 4enum-member Yoga.Justify.SpaceAroundenum-member Yoga.Justify.SpaceBetween = 3enum-member Yoga.Justify.SpaceBetweenenum-member Yoga.Justify.SpaceEvenly = 5enum-member Yoga.Justify.SpaceEvenlyenum-member Yoga.MeasureMode.AtMost = 2enum-member Yoga.MeasureMode.AtMostenum-member Yoga.MeasureMode.Exactly = 1enum-member Yoga.MeasureMode.Exactlyenum-member Yoga.MeasureMode.Undefined = 0enum-member Yoga.MeasureMode.Undefinedenum-member Yoga.Overflow.Hidden = 1enum-member Yoga.Overflow.Hiddenenum-member Yoga.Overflow.Scroll = 2enum-member Yoga.Overflow.Scrollenum-member Yoga.Overflow.Visible = 0enum-member Yoga.Overflow.Visibleenum-member Yoga.PositionType.Absolute = 2enum-member Yoga.PositionType.Absoluteenum-member Yoga.PositionType.Relative = 1enum-member Yoga.PositionType.Relativeenum-member Yoga.PositionType.Static = 0enum-member Yoga.PositionType.Staticenum-member Yoga.Unit.Auto = 3enum-member Yoga.Unit.Autoenum-member Yoga.Unit.Percent = 2enum-member Yoga.Unit.Percentenum-member Yoga.Unit.Point = 1enum-member Yoga.Unit.Pointenum-member Yoga.Unit.Undefined = 0enum-member Yoga.Unit.Undefinedenum-member Yoga.Wrap.NoWrap = 0enum-member Yoga.Wrap.NoWrapenum-member Yoga.Wrap.Wrap = 1enum-member Yoga.Wrap.Wrapenum-member Yoga.Wrap.WrapReverse = 2enum-member Yoga.Wrap.WrapReversefunction createTimeline(options?: TimelineOptions): Timelinefunction createTimeline(options?: TimelineOptions, renderer?: CliRenderer): Timelinefunction imageInfo(data: Uint8Array | ArrayBuffer): ImageInfofunction imageInfo(data: Uint8Array | ArrayBuffer, options?: ImageCreateOptions): ImageInfointerface AudioEngineLibinterface AudioEngineLib extends Pick<FFIRenderLib, Extract<keyof FFIRenderLib, `audio${string}` | "createAudioEngine" | "destroyAudioEngine">>interface ImageLoadOptionsinterface ImageLoadOptions extends ImageCreateOptionsinterface NativeImagePoolOptionsinterface NativeImagePoolOptions extends ImageCreateOptionsinterface PixelImportOptionsinterface PixelImportOptions extends ImageCreateOptionsmethod CliRenderer.resume(): voidmethod CliRenderer.resume(): Promise<void>method CliRenderer.suspend(): voidmethod CliRenderer.suspend(): Promise<void>static method EditBuffer.create(widthMethod: WidthMethod): EditBufferstatic method EditBuffer.create(widthMethod: WidthMethod, source: NativeResourceOwner): EditBuffermethod ExtmarksController.adjustExtmarksAfterDeletion(deleteOffset: number, length: number): voidmethod ExtmarksController.adjustExtmarksAfterDeletion(deleteOffset: number, length: number, updateHighlights?: boolean): voidstatic method NativeImage.decode(data: Uint8Array | ArrayBuffer): NativeImagestatic method NativeImage.decode(data: Uint8Array | ArrayBuffer, options?: ImageCreateOptions): NativeImagestatic method NativeImage.fromRgba(pixels: Uint8Array, width: number, height: number, stride?: number): NativeImagestatic method NativeImage.fromRgba(pixels: Uint8Array, width: number, height: number, stride?: number, options?: ImageCreateOptions): NativeImagestatic method OptimizedBuffer.create(width: number, height: number, widthMethod: WidthMethod, options?: { respectAlpha?: boolean; id?: string; }): OptimizedBufferstatic method OptimizedBuffer.create(width: number, height: number, widthMethod: WidthMethod, options: { respectAlpha?: boolean; id?: string; owner: NativeResourceOwner; }): OptimizedBuffermethod OptimizedBuffer.drawGrid(options: { borderChars: Uint32Array; borderFg: RGBA; borderBg: RGBA; columnOffsets: Int32Array; rowOffsets: Int32Array; drawInner: boolean; drawOuter: boolean; }): voidmethod OptimizedBuffer.drawGrid(options: NativeBufferGrid): voidmethod OptimizedBuffer.encodeUnicode(text: string): { ptr: Pointer; data: Array<{ width: number; char: number; }>; } | nullmethod OptimizedBuffer.encodeUnicode(text: string): EncodedUnicodemethod OptimizedBuffer.freeUnicode(encoded: { ptr: Pointer; data: Array<{ width: number; char: number; }>; }): voidmethod OptimizedBuffer.freeUnicode(encoded: EncodedUnicode): voidstatic method SyntaxStyle.create(): SyntaxStylestatic method SyntaxStyle.create(source: NativeResourceOwner): SyntaxStylestatic method SyntaxStyle.fromStyles(styles: Record<string, StyleDefinitionInput>): SyntaxStylestatic method SyntaxStyle.fromStyles(styles: Record<string, StyleDefinitionInput> | Map<string, StyleDefinitionInput>, owner: NativeResourceOwner): SyntaxStylestatic method SyntaxStyle.fromTheme(theme: ThemeTokenStyle[]): SyntaxStylestatic method SyntaxStyle.fromTheme(theme: ThemeTokenStyle[], owner: NativeResourceOwner): SyntaxStylestatic method TextBuffer.create(widthMethod: WidthMethod): TextBufferstatic method TextBuffer.create(widthMethod: WidthMethod, source: NativeResourceOwner): TextBufferprotected method TextBufferRenderable.updateViewportOffset(): voidprotected method TextBufferRenderable.updateViewportOffset(scrollX?: number, scrollY?: number): voidstatic method Yoga.Config.create(): Configstatic method Yoga.Config.create(renderLib?: RenderLib): Configprotected property ASCIIFontRenderable._backgroundColor: ColorInputprotected property ASCIIFontRenderable._backgroundColor: RGBAprotected property ASCIIFontRenderable._color: ColorInput | ColorInput[]protected property ASCIIFontRenderable._color: RGBA | RGBA[]protected property ASCIIFontRenderable._selectionBg: ColorInput | undefinedprotected property ASCIIFontRenderable._selectionBg: RGBA | undefinedprotected property ASCIIFontRenderable._selectionFg: ColorInput | undefinedprotected property ASCIIFontRenderable._selectionFg: RGBA | undefinedprotected property Renderable._screenX: numberprotected readonly property Renderable._screenX: numberprotected property Renderable._screenY: numberprotected readonly property Renderable._screenY: numberreadonly property SliderRenderable.orientation: "vertical" | "horizontal"property SliderRenderable.orientation: "vertical" | "horizontal"type ImageHandle = NativeHandle<"image">type ImageHandle = ContextImageHandletype NativeSpanFeedStats = { bytesWritten: bigint; spansCommitted: bigint; chunks: number; pendingSpans: number; }type NativeSpanFeedStats = { bytesWritten: bigint; spansCommitted: bigint; chunks: number; pendingSpans: number; outstandingSpans: number; outstandingBytes: bigint; }
Removed
class Clipboardconst NativeMeasureTargetKind: { readonly None: 0; readonly TextBufferView: 1; readonly EditorView: 2; }constructor Clipboard(lib: RenderLib, rendererPtr: RendererHandle)constructor OptimizedBuffer(lib: RenderLib, ptr: OptimizedBufferHandle, width: number, height: number, options: { respectAlpha?: boolean; id?: string; widthMethod?: WidthMethod; })interface NativeRenderOperationResultinterface NativeRendererCreateOptionsinterface RenderLib extends AudioEngineLibprotected method BoxRenderable.getScissorRect(): { x: number; y: number; width: number; height: number; }method CliRenderer.addToHitGrid(x: number, y: number, width: number, height: number, id: number): voidmethod CliRenderer.clearHitGridScissorRects(): voidmethod CliRenderer.dumpBuffers(timestamp?: number): voidmethod CliRenderer.dumpOutputBuffer(timestamp?: number): voidmethod CliRenderer.popHitGridScissorRect(): voidmethod CliRenderer.pushHitGridScissorRect(x: number, y: number, width: number, height: number): voidmethod CodeRenderable.destroy(): voidmethod EditBufferRenderable.destroy(): voidprotected method EditBufferRenderable.onRemove(): voidmethod EditBufferRenderable.render(buffer: OptimizedBuffer, deltaTime: number): voidprotected method EditBufferRenderable.renderCursor(buffer: OptimizedBuffer): voidmethod EmbeddedTerminalRenderable.render(buffer: OptimizedBuffer, deltaTime: number): voidprotected method FrameBufferRenderable.destroySelf(): voidmethod ImageRenderable.render(buffer: OptimizedBuffer, deltaTime: number): voidmethod InputRenderable.handlePaste(event: PasteEvent): voidprotected method MarkdownRenderable.renderSelf(buffer: OptimizedBuffer, deltaTime: number): voidprotected method Renderable._getVisibleChildren(): number[]protected method Renderable._hasVisibleChildFilter(): booleanmethod Renderable.canReuseRenderCommandList(): booleanmethod Renderable.getLayoutNode(): YogaNodeprotected method Renderable.getScissorRect(): { x: number; y: number; width: number; height: number; }method Renderable.render(buffer: OptimizedBuffer, deltaTime: number): voidmethod Renderable.updateFromLayout(): voidmethod Renderable.updateLayout(deltaTime: number, renderList?: RenderCommand[]): voidmethod RootRenderable.calculateLayout(): voidmethod RootRenderable.render(buffer: OptimizedBuffer, deltaTime: number): voidmethod TextBufferRenderable.destroy(): voidmethod TextBufferRenderable.render(buffer: OptimizedBuffer, deltaTime: number): voidmethod TextRenderable.destroy(): voidproperty AudioEngineLib.audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => voidproperty AudioEngineLib.audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => voidproperty AudioEngineLib.audioCloseStream: (engine: AudioEngineHandle, streamId: number, reason: NativeAudioStreamCloseReason) => { status: number; stats: NativeAudioStreamStats | null; }property AudioEngineLib.audioCreateGroup: (engine: AudioEngineHandle, name: string) => { status: number; groupId: number | null; }property AudioEngineLib.audioCreateStream: (engine: AudioEngineHandle, options: AudioStreamCreateOptions) => { status: number; streamId: number | null; }property AudioEngineLib.audioEnableTap: (engine: AudioEngineHandle, enabled: boolean, capacityFrames: number) => numberproperty AudioEngineLib.audioEndStream: (engine: AudioEngineHandle, streamId: number) => numberproperty AudioEngineLib.audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => stringproperty AudioEngineLib.audioGetCaptureStats: (engine: AudioEngineHandle) => { status: number; stats: NativeAudioCaptureStats | null; }property AudioEngineLib.audioGetPlaybackDeviceCount: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioGetPlaybackDeviceName: (engine: AudioEngineHandle, index: number) => stringproperty AudioEngineLib.audioGetStats: (engine: AudioEngineHandle) => AudioStats | nullproperty AudioEngineLib.audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | nullproperty AudioEngineLib.audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => booleanproperty AudioEngineLib.audioIsCaptureRunning: (engine: AudioEngineHandle) => booleanproperty AudioEngineLib.audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => booleanproperty AudioEngineLib.audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => { status: number; soundId: number | null; }property AudioEngineLib.audioMixToBuffer: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => numberproperty AudioEngineLib.audioPlay: (engine: AudioEngineHandle, soundId: number, options?: AudioVoiceOptions) => { status: number; voiceId: number | null; }property AudioEngineLib.audioReadCapture: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number) => { status: number; framesRead: number; }property AudioEngineLib.audioReadTap: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => { status: number; framesRead: number; }property AudioEngineLib.audioRefreshCaptureDevices: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioRefreshPlaybackDevices: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioRestartStream: (engine: AudioEngineHandle, streamId: number) => numberproperty AudioEngineLib.audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => numberproperty AudioEngineLib.audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => numberproperty AudioEngineLib.audioSetGroupVolume: (engine: AudioEngineHandle, groupId: number, volume: number) => numberproperty AudioEngineLib.audioSetMasterVolume: (engine: AudioEngineHandle, volume: number) => numberproperty AudioEngineLib.audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => numberproperty AudioEngineLib.audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => numberproperty AudioEngineLib.audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => numberproperty AudioEngineLib.audioSetVoiceGroup: (engine: AudioEngineHandle, voiceId: number, groupId: number) => numberproperty AudioEngineLib.audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => numberproperty AudioEngineLib.audioStartCapture: (engine: AudioEngineHandle, options: AudioStartOptions | undefined, channels: number, capacityFrames: number) => numberproperty AudioEngineLib.audioStartMixer: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioStop: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioStopCapture: (engine: AudioEngineHandle) => numberproperty AudioEngineLib.audioStopVoice: (engine: AudioEngineHandle, voiceId: number) => numberproperty AudioEngineLib.audioUnload: (engine: AudioEngineHandle, soundId: number) => numberproperty AudioEngineLib.audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => numberproperty AudioEngineLib.createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | nullproperty AudioEngineLib.destroyAudioEngine: (engine: AudioEngineHandle) => voidproperty CliRenderer.rendererPtr: RendererHandleproperty CliRenderer.useThread: booleanproperty CliRendererConfig.useThread?: booleanreadonly property EditBuffer.ptr: EditBufferHandleprotected property EditBufferRenderable._focusable: booleanproperty EditBufferRenderable.selectable: booleanreadonly property EditorView.ptr: EditorViewHandleproperty RenderContext.addToHitGrid: (x: number, y: number, width: number, height: number, id: number) => voidproperty RenderContext.clearHitGridScissorRects: () => voidproperty RenderContext.popHitGridScissorRect: () => voidproperty RenderContext.pushHitGridScissorRect: (x: number, y: number, width: number, height: number) => voidprotected property Renderable._childrenInZIndexOrder: Renderable[]protected property Renderable._heightValue: numberprotected property Renderable._widthValue: numberprotected property Renderable._x: numberprotected property Renderable._y: numberprotected property Renderable.yogaNode: YogaNodeprotected property ScrollBarRenderable._focusable: booleanprotected property ScrollBoxRenderable._focusable: booleanprotected property SelectRenderable._focusable: booleanreadonly property SyntaxStyle.ptr: SyntaxStyleHandleprotected property TabSelectRenderable._focusable: booleanreadonly property TextBuffer.ptr: TextBufferHandleproperty TextBufferRenderable.selectable: booleanreadonly property TextBufferView.ptr: TextBufferViewHandleproperty TextRenderable.onLifecyclePass: () => voidtype EditBufferHandle = NativeHandle<"edit_buffer">type EditorViewHandle = NativeHandle<"editor_view">type EmbeddedTerminalHandle = NativeHandle<"embedded_terminal">type EventSinkHandle = NativeHandle<"event_sink">type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandletype NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind]type NativeRenderableHandle = NativeHandle<"native_renderable">type OptimizedBufferHandle = NativeHandle<"optimized_buffer">type RenderCommand = RenderCommandPushScissorRect | RenderCommandPopScissorRect | RenderCommandRender | RenderCommandPushOpacity | RenderCommandPopOpacitytype RendererHandle = NativeHandle<"renderer">type SyntaxStyleHandle = NativeHandle<"syntax_style">type TextBufferHandle = NativeHandle<"text_buffer">type TextBufferViewHandle = NativeHandle<"text_buffer_view">
@opentui/core/testing#
Added
readonly property ManualClock.pendingTimerCount: numberproperty TestRendererSetup.[Symbol.asyncDispose]: () => Promise<void>property TestRendererSetup.dispose: () => Promise<void>
@opentui/core/yoga#
Added
class YogaError extends Errorconstructor YogaError(operation: string, status: YogaStatus)enum YogaStatusmethod Config.assertAlive(): voidmethod Config.assertUnused(): voidmethod Config.ensureCallbacks(): voidstatic method Config.fromBorrowedPointer(ptr: Pointer, renderLib?: RenderLib): Configmethod Node.assertMutable(): voidmethod Node.runMutation<T>(operation: () => T): Treadonly property Config.dirtied: Map<Pointer, { node: Node; callback: DirtiedFunction; }>readonly property Config.measures: Map<Pointer, MeasureFunction>readonly property Config.nodes: Map<Pointer, Node>readonly property Config.renderLib: RenderLib
Changed
enum-member Align.Auto = 0enum-member Align.Autoenum-member Align.Baseline = 5enum-member Align.Baselineenum-member Align.Center = 2enum-member Align.Centerenum-member Align.FlexEnd = 3enum-member Align.FlexEndenum-member Align.FlexStart = 1enum-member Align.FlexStartenum-member Align.SpaceAround = 7enum-member Align.SpaceAroundenum-member Align.SpaceBetween = 6enum-member Align.SpaceBetweenenum-member Align.SpaceEvenly = 8enum-member Align.SpaceEvenlyenum-member Align.Stretch = 4enum-member Align.Stretchenum-member BoxSizing.BorderBox = 0enum-member BoxSizing.BorderBoxenum-member BoxSizing.ContentBox = 1enum-member BoxSizing.ContentBoxenum-member Dimension.Height = 1enum-member Dimension.Heightenum-member Dimension.Width = 0enum-member Dimension.Widthenum-member Direction.Inherit = 0enum-member Direction.Inheritenum-member Direction.LTR = 1enum-member Direction.LTRenum-member Direction.RTL = 2enum-member Direction.RTLenum-member Edge.All = 8enum-member Edge.Allenum-member Edge.Bottom = 3enum-member Edge.Bottomenum-member Edge.End = 5enum-member Edge.Endenum-member Edge.Horizontal = 6enum-member Edge.Horizontalenum-member Edge.Left = 0enum-member Edge.Leftenum-member Edge.Right = 2enum-member Edge.Rightenum-member Edge.Start = 4enum-member Edge.Startenum-member Edge.Top = 1enum-member Edge.Topenum-member Edge.Vertical = 7enum-member Edge.Verticalenum-member FlexDirection.Column = 0enum-member FlexDirection.Columnenum-member FlexDirection.ColumnReverse = 1enum-member FlexDirection.ColumnReverseenum-member FlexDirection.Row = 2enum-member FlexDirection.Rowenum-member FlexDirection.RowReverse = 3enum-member FlexDirection.RowReverseenum-member Gutter.All = 2enum-member Gutter.Allenum-member Gutter.Column = 0enum-member Gutter.Columnenum-member Gutter.Row = 1enum-member Gutter.Rowenum-member Justify.Center = 1enum-member Justify.Centerenum-member Justify.FlexEnd = 2enum-member Justify.FlexEndenum-member Justify.FlexStart = 0enum-member Justify.FlexStartenum-member Justify.SpaceAround = 4enum-member Justify.SpaceAroundenum-member Justify.SpaceBetween = 3enum-member Justify.SpaceBetweenenum-member Justify.SpaceEvenly = 5enum-member Justify.SpaceEvenlyenum-member MeasureMode.AtMost = 2enum-member MeasureMode.AtMostenum-member MeasureMode.Exactly = 1enum-member MeasureMode.Exactlyenum-member MeasureMode.Undefined = 0enum-member MeasureMode.Undefinedenum-member Overflow.Hidden = 1enum-member Overflow.Hiddenenum-member Overflow.Scroll = 2enum-member Overflow.Scrollenum-member Overflow.Visible = 0enum-member Overflow.Visibleenum-member PositionType.Absolute = 2enum-member PositionType.Absoluteenum-member PositionType.Relative = 1enum-member PositionType.Relativeenum-member PositionType.Static = 0enum-member PositionType.Staticenum-member Unit.Auto = 3enum-member Unit.Autoenum-member Unit.Percent = 2enum-member Unit.Percentenum-member Unit.Point = 1enum-member Unit.Pointenum-member Unit.Undefined = 0enum-member Unit.Undefinedenum-member Wrap.NoWrap = 0enum-member Wrap.NoWrapenum-member Wrap.Wrap = 1enum-member Wrap.Wrapenum-member Wrap.WrapReverse = 2enum-member Wrap.WrapReversestatic method Config.create(): Configstatic method Config.create(renderLib?: RenderLib): Config
@opentui/solid#
Added
const RenderableContext: Context<(() => RenderContext) | undefined>function _render(code: () => DomNode, root: DomNode): () => voidfunction removeNode(parent: DomNode, node: DomNode): voidprotected method LayoutSlotRenderable.destroySelf(): voidmethod TextSlotRenderable.destroyRecursively(): void
Changed
class LayoutSlotRenderable extends SlotBaseRenderableclass LayoutSlotRenderable extends Renderableconst createComponent: <T>(Comp: (props: T) => BaseRenderable, props: T) => BaseRenderableconst createComponent: <T>(Comp: (props: T) => unknown, props: T) => BaseRenderableconstructor LayoutSlotRenderable(id: string, parent?: SlotRenderable, layoutParent?: BaseRenderable)constructor LayoutSlotRenderable(id: string, parent: SlotRenderable, layoutParent: Renderable)method SlotRenderable.didDestroySlotChild(child: LayoutSlotRenderable | TextSlotRenderable): voidmethod SlotRenderable.didDestroySlotChild(child: BaseRenderable): void
Removed
const _render: (code: () => BaseRenderable, node: BaseRenderable) => () => voidmethod LayoutSlotRenderable.destroy(): voidmethod LayoutSlotRenderable.destroyRecursively(): voidmethod LayoutSlotRenderable.detachFromSlot(): voidmethod LayoutSlotRenderable.getLayoutNode(): Yoga.Nodemethod LayoutSlotRenderable.onRemove(): voidmethod LayoutSlotRenderable.updateFromLayout(): voidmethod LayoutSlotRenderable.updateLayout(): voidprotected property LayoutSlotRenderable.destroyed: booleanprotected property LayoutSlotRenderable.slotParent?: SlotRenderableprotected property LayoutSlotRenderable.yogaNode: Yoga.Node
@opentui/ssh#
Added
class OutputPressureError extends SshErrorconstructor OutputPressureError()
opentui.h#
Added
const OT_ALIGN_AUTO = 0const OT_ALIGN_BASELINE = 5const OT_ALIGN_CENTER = 2const OT_ALIGN_FLEX_END = 3const OT_ALIGN_FLEX_START = 1const OT_ALIGN_SPACE_AROUND = 7const OT_ALIGN_SPACE_BETWEEN = 6const OT_ALIGN_SPACE_EVENLY = 8const OT_ALIGN_STRETCH = 4const OT_BORDER_ALL = 15const OT_BORDER_BOTTOM = 2const OT_BORDER_DOUBLE = 1const OT_BORDER_HEAVY = 3const OT_BORDER_LEFT = 1const OT_BORDER_NONE = 0const OT_BORDER_RIGHT = 4const OT_BORDER_ROUNDED = 2const OT_BORDER_SINGLE = 0const OT_BORDER_TOP = 8const OT_BOX_SIZING_BORDER_BOX = 0const OT_BOX_SIZING_CONTENT_BOX = 1const OT_BUFFER_DRAW_BOX = 6const OT_BUFFER_DRAW_CELL = 3const OT_BUFFER_DRAW_CELL_BLEND = 4const OT_BUFFER_DRAW_CHAR = 5const OT_BUFFER_DRAW_CLEAR = 0const OT_BUFFER_DRAW_COMPOSE = 7const OT_BUFFER_DRAW_FILL = 1const OT_BUFFER_DRAW_HAS_BACKGROUND = 1const OT_BUFFER_DRAW_HAS_SOURCE_HEIGHT = 4const OT_BUFFER_DRAW_HAS_SOURCE_WIDTH = 2const OT_BUFFER_DRAW_RESPECT_ALPHA = 8const OT_BUFFER_DRAW_TEXT = 2const OT_BUFFER_GRID_INNER = 1const OT_BUFFER_GRID_OUTER = 2const OT_BUFFER_RESPECT_ALPHA = 1const OT_BUFFER_STACK_CLEAR_OPACITY = 6const OT_BUFFER_STACK_CLEAR_SCISSORS = 3const OT_BUFFER_STACK_DEPTH_MAX = 256const OT_BUFFER_STACK_GET_OPACITY = 0const OT_BUFFER_STACK_POP_OPACITY = 5const OT_BUFFER_STACK_POP_SCISSOR = 2const OT_BUFFER_STACK_PUSH_OPACITY = 4const OT_BUFFER_STACK_PUSH_SCISSOR = 1const OT_BUFFER_TEXT_BYTES_MAX = 65536const OT_CAP_ANSI256 = 8const OT_CAP_BRACKETED_PASTE = 2048const OT_CAP_COLOR_SCHEME_UPDATES = 32const OT_CAP_EXPLICIT_CURSOR_POSITIONING = 32768const OT_CAP_EXPLICIT_WIDTH = 64const OT_CAP_FOCUS_TRACKING = 512const OT_CAP_HYPERLINKS = 4096const OT_CAP_KITTY_GRAPHICS = 2const OT_CAP_KITTY_KEYBOARD = 1const OT_CAP_NOTIFICATIONS = 16384const OT_CAP_OSC52 = 8192const OT_CAP_REMOTE = 65536const OT_CAP_RGB = 4const OT_CAP_SCALED_TEXT = 128const OT_CAP_SGR_PIXELS = 16const OT_CAP_SIXEL = 256const OT_CAP_SYNC = 1024const OT_CLIPBOARD_CANCEL_ALREADY_TERMINAL = 1const OT_CLIPBOARD_CANCEL_INVALID_HANDLE = 2const OT_CLIPBOARD_CANCEL_REQUESTED = 0const OT_CLIPBOARD_COPY_BUFFER_TOO_SMALL = 1const OT_CLIPBOARD_COPY_INVALID_ARGUMENT = 4const OT_CLIPBOARD_COPY_INVALID_HANDLE = 2const OT_CLIPBOARD_COPY_INVALID_STATE = 3const OT_CLIPBOARD_COPY_OK = 0const OT_CLIPBOARD_DESTROY_DESTROYED = 0const OT_CLIPBOARD_DESTROY_INVALID_HANDLE = 2const OT_CLIPBOARD_DESTROY_NOT_READY = 1const OT_CLIPBOARD_OPERATION_CANCELLED = 6const OT_CLIPBOARD_OPERATION_CLEARED = 4const OT_CLIPBOARD_OPERATION_EMPTY = 2const OT_CLIPBOARD_OPERATION_FAILED = 9const OT_CLIPBOARD_OPERATION_INVALID_HANDLE = 10const OT_CLIPBOARD_OPERATION_LIMIT_EXCEEDED = 8const OT_CLIPBOARD_OPERATION_PENDING = 0const OT_CLIPBOARD_OPERATION_READ = 1const OT_CLIPBOARD_OPERATION_TIMED_OUT = 7const OT_CLIPBOARD_OPERATION_UNSUPPORTED = 5const OT_CLIPBOARD_OPERATION_WRITTEN = 3const OT_CLIPBOARD_SHUTDOWN_INVALID_HANDLE = 2const OT_CLIPBOARD_SHUTDOWN_PENDING = 0const OT_CLIPBOARD_SHUTDOWN_READY = 1const OT_CLIPBOARD_START_INVALID_ARGUMENT = 4const OT_CLIPBOARD_START_INVALID_SERVICE = 1const OT_CLIPBOARD_START_LIMIT_EXCEEDED = 3const OT_CLIPBOARD_START_OK = 0const OT_CLIPBOARD_START_OUT_OF_MEMORY = 5const OT_CLIPBOARD_START_SHUTTING_DOWN = 2const OT_COLOR_CHANNEL_MASK = 255const OT_COLOR_DEFAULT = 2const OT_COLOR_INDEXED = 1const OT_COLOR_META_SHIFT = 8const OT_COLOR_RGB = 0const OT_CONTEXT_ABI_VERSION = 1const OT_CONTEXT_BUSY = -6const OT_CONTROL_CAPABILITY_RESPONSE = 1const OT_CONTROL_CURSOR = 8const OT_CONTROL_KITTY_KEYBOARD_FLAGS = 4const OT_CONTROL_MOUSE = 3const OT_CONTROL_PACKET_LIMIT = -20const OT_CONTROL_PALETTE_QUERY = 10const OT_CONTROL_QUERY_PIXEL_RESOLUTION = 6const OT_CONTROL_QUERY_THEME_COLORS = 7const OT_CONTROL_RESET_BACKGROUND = 9const OT_CONTROL_RESTORE_MODES = 5const OT_CONTROL_TITLE = 2const OT_CURSOR_BLINKING = 4const OT_CURSOR_COLOR = 8const OT_CURSOR_MOUSE_POINTER = 16const OT_CURSOR_POSITION = 1const OT_CURSOR_STYLE = 2const OT_DIAGNOSTIC_MESSAGE_BYTES = 4096const OT_DIAGNOSTIC_TRUNCATED = 1const OT_DIMENSION_HEIGHT = 1const OT_DIMENSION_WIDTH = 0const OT_DIRECTION_INHERIT = 0const OT_DIRECTION_LTR = 1const OT_DIRECTION_RTL = 2const OT_DISPLAY_FLEX = 0const OT_DISPLAY_NONE = 1const OT_EDGE_ALL = 8const OT_EDGE_BOTTOM = 3const OT_EDGE_END = 5const OT_EDGE_HORIZONTAL = 6const OT_EDGE_LEFT = 0const OT_EDGE_NONE = 0const OT_EDGE_RIGHT = 2const OT_EDGE_START = 4const OT_EDGE_TOP = 1const OT_EDGE_VERTICAL = 7const OT_EDITOR_CURSOR_OFFSET = 4const OT_EDITOR_DELETE_SELECTION = 3const OT_EDITOR_GOTO_LINE_END = 2const OT_EDITOR_MOVE_DOWN = 1const OT_EDITOR_MOVE_UP = 0const OT_EDITOR_POSITION_CURSOR = 0const OT_EDITOR_POSITION_EOL = 3const OT_EDITOR_POSITION_NEXT_WORD = 1const OT_EDITOR_POSITION_PREV_WORD = 2const OT_EDITOR_POSITION_VISUAL_EOL = 5const OT_EDITOR_POSITION_VISUAL_SOL = 4const OT_EDITOR_SELECT_CELL = 6const OT_EDITOR_SELECT_COLORS = 9const OT_EDITOR_SELECT_INCLUSIVE = 8const OT_EDITOR_SELECT_LOCAL = 3const OT_EDITOR_SELECT_LOCAL_RESET = 5const OT_EDITOR_SELECT_LOCAL_UPDATE = 4const OT_EDITOR_SELECT_OCCUPANCY = 7const OT_EDITOR_SELECT_RESET = 2const OT_EDITOR_SELECT_SET = 0const OT_EDITOR_SELECT_UPDATE = 1const OT_EDITOR_STYLE_ATTRIBUTES = 4const OT_EDITOR_STYLE_BACKGROUND = 2const OT_EDITOR_STYLE_FOREGROUND = 1const OT_EDITOR_TAB_INDICATOR = 6const OT_EDITOR_WRAP_MODE = 5const OT_EDIT_BACKSPACE = 1const OT_EDIT_CLEAR = 10const OT_EDIT_CLEAR_HISTORY = 11const OT_EDIT_CONTENT_CHANGED = 2const OT_EDIT_CURSOR_CHANGED = 1const OT_EDIT_CURSOR_OFFSET = 9const OT_EDIT_DEBUG_ROPE = 12const OT_EDIT_DELETE_FORWARD = 0const OT_EDIT_DELETE_LINE = 3const OT_EDIT_GOTO_LINE = 8const OT_EDIT_HIGHLIGHT_ADD_LINE = 0const OT_EDIT_HIGHLIGHT_ADD_RANGE = 1const OT_EDIT_HIGHLIGHT_CLEAR_ALL = 4const OT_EDIT_HIGHLIGHT_CLEAR_LINE = 3const OT_EDIT_HIGHLIGHT_REMOVE_REF = 2const OT_EDIT_HISTORY_CURSOR_CHANGED = 4const OT_EDIT_MOVE_DOWN = 7const OT_EDIT_MOVE_LEFT = 4const OT_EDIT_MOVE_RIGHT = 5const OT_EDIT_MOVE_UP = 6const OT_EDIT_NEW_LINE = 2const OT_EDIT_POSITION_COORDS = 5const OT_EDIT_POSITION_CURSOR = 0const OT_EDIT_POSITION_EOL = 3const OT_EDIT_POSITION_LINE_START = 6const OT_EDIT_POSITION_NEXT_WORD = 1const OT_EDIT_POSITION_OFFSET = 4const OT_EDIT_POSITION_PREV_WORD = 2const OT_EMBEDDED_TERMINAL_CLEAR_SELECTION = 2const OT_EMBEDDED_TERMINAL_INVALIDATE = 0const OT_EMBEDDED_TERMINAL_SCROLL = 1const OT_EMBEDDED_TERMINAL_SET_TRANSPARENT_BACKGROUND = 3const OT_FLEX_DIRECTION_COLUMN = 0const OT_FLEX_DIRECTION_COLUMN_REVERSE = 1const OT_FLEX_DIRECTION_ROW = 2const OT_FLEX_DIRECTION_ROW_REVERSE = 3const OT_FLEX_WRAP_NONE = 0const OT_FLEX_WRAP_REVERSE = 2const OT_FLEX_WRAP_WRAP = 1const OT_FRAME_BUSY = -27const OT_FRAME_REQUEST_LIMIT = -28const OT_GUTTER_ALL = 2const OT_GUTTER_COLUMN = 0const OT_GUTTER_ROW = 1const OT_IMAGE_ALPHA_OPAQUE = 1const OT_IMAGE_ALPHA_STRAIGHT = 0const OT_IMAGE_ASSUMED_SRGB = 0const OT_IMAGE_BGRA8 = 1const OT_IMAGE_BLEND_DESTINATION_OVER = 2const OT_IMAGE_BLEND_SOURCE = 1const OT_IMAGE_BLEND_SOURCE_OVER = 0const OT_IMAGE_BUSY = -47const OT_IMAGE_COVER = 1const OT_IMAGE_DIMENSION_LIMIT = -43const OT_IMAGE_DRAW_SOURCE_HEIGHT = 2const OT_IMAGE_DRAW_SOURCE_WIDTH = 1const OT_IMAGE_EXPLICIT_SRGB = 1const OT_IMAGE_FILL = 2const OT_IMAGE_FILTER_AREA = 1const OT_IMAGE_FILTER_CATMULL_ROM = 4const OT_IMAGE_FILTER_CUBIC_BSPLINE = 3const OT_IMAGE_FILTER_DEFAULT = 0const OT_IMAGE_FILTER_MITCHELL = 5const OT_IMAGE_FILTER_NEAREST = 6const OT_IMAGE_FILTER_TRIANGLE = 2const OT_IMAGE_FIT = 0const OT_IMAGE_FLIP = 3const OT_IMAGE_FLOP = 4const OT_IMAGE_FORMAT_GIF = 5const OT_IMAGE_FORMAT_JPEG = 3const OT_IMAGE_FORMAT_PNG = 1const OT_IMAGE_FORMAT_RGBA = 2const OT_IMAGE_FORMAT_UNKNOWN = 0const OT_IMAGE_FORMAT_WEBP = 4const OT_IMAGE_MALFORMED_DATA = -42const OT_IMAGE_MEMORY_LIMIT = -44const OT_IMAGE_OUTPUT_TOO_SMALL = -45const OT_IMAGE_PROTOCOL_AUTO = 0const OT_IMAGE_PROTOCOL_BLOCKS = 3const OT_IMAGE_PROTOCOL_KITTY = 1const OT_IMAGE_PROTOCOL_SIXEL = 2const OT_IMAGE_RGBA8 = 0const OT_IMAGE_ROTATE_180 = 1const OT_IMAGE_ROTATE_270 = 2const OT_IMAGE_ROTATE_90 = 0const OT_IMAGE_UNSUPPORTED_COLOR_SPACE = -41const OT_IMAGE_UNSUPPORTED_FEATURE = -46const OT_IMAGE_UNSUPPORTED_FORMAT = -40const OT_INTERNAL_ERROR = -5const OT_INVALID_ARGUMENT = -1const OT_INVALID_PHASE = -19const OT_JUSTIFY_CENTER = 1const OT_JUSTIFY_FLEX_END = 2const OT_JUSTIFY_FLEX_START = 0const OT_JUSTIFY_SPACE_AROUND = 4const OT_JUSTIFY_SPACE_BETWEEN = 3const OT_JUSTIFY_SPACE_EVENLY = 5const OT_LAYOUT_LIMIT = -26const OT_LAYOUT_PAINT = 2const OT_LAYOUT_PUBLIC = 0const OT_LAYOUT_YOGA = 1const OT_LEASE_BYTES_LIMIT = -22const OT_LEASE_LIMIT = -21const OT_MEASURE_AT_MOST = 2const OT_MEASURE_EXACTLY = 1const OT_MEASURE_UNDEFINED = 0const OT_MOUSE_POINTER_ALIAS = 12const OT_MOUSE_POINTER_ALL_SCROLL = 19const OT_MOUSE_POINTER_AUTO = 0const OT_MOUSE_POINTER_CELL = 8const OT_MOUSE_POINTER_COL_RESIZE = 20const OT_MOUSE_POINTER_CONTEXT_MENU = 3const OT_MOUSE_POINTER_COPY = 13const OT_MOUSE_POINTER_CROSSHAIR = 9const OT_MOUSE_POINTER_DEFAULT = 1const OT_MOUSE_POINTER_EW_RESIZE = 30const OT_MOUSE_POINTER_E_RESIZE = 23const OT_MOUSE_POINTER_GRAB = 17const OT_MOUSE_POINTER_GRABBING = 18const OT_MOUSE_POINTER_HELP = 4const OT_MOUSE_POINTER_MAX = 35const OT_MOUSE_POINTER_MOVE = 14const OT_MOUSE_POINTER_NESW_RESIZE = 32const OT_MOUSE_POINTER_NE_RESIZE = 26const OT_MOUSE_POINTER_NONE = 2const OT_MOUSE_POINTER_NOT_ALLOWED = 16const OT_MOUSE_POINTER_NO_DROP = 15const OT_MOUSE_POINTER_NS_RESIZE = 31const OT_MOUSE_POINTER_NWSE_RESIZE = 33const OT_MOUSE_POINTER_NW_RESIZE = 27const OT_MOUSE_POINTER_N_RESIZE = 22const OT_MOUSE_POINTER_POINTER = 5const OT_MOUSE_POINTER_PROGRESS = 6const OT_MOUSE_POINTER_ROW_RESIZE = 21const OT_MOUSE_POINTER_SE_RESIZE = 28const OT_MOUSE_POINTER_SW_RESIZE = 29const OT_MOUSE_POINTER_S_RESIZE = 24const OT_MOUSE_POINTER_TEXT = 10const OT_MOUSE_POINTER_UNCHANGED = 4294967295const OT_MOUSE_POINTER_VERTICAL_TEXT = 11const OT_MOUSE_POINTER_WAIT = 7const OT_MOUSE_POINTER_W_RESIZE = 25const OT_MOUSE_POINTER_ZOOM_IN = 34const OT_MOUSE_POINTER_ZOOM_OUT = 35const OT_OBJECT_LIMIT = -16const OT_OK = 0const OT_OUTPUT_BACKPRESSURE = -11const OT_OUTPUT_BUSY = -13const OT_OUTPUT_FAILED = -15const OT_OUT_OF_MEMORY = -3const OT_OVERFLOW_HIDDEN = 1const OT_OVERFLOW_SCROLL = 2const OT_OVERFLOW_VISIBLE = 0const OT_POSITION_ABSOLUTE = 2const OT_POSITION_RELATIVE = 1const OT_POSITION_STATIC = 0const OT_PUMP_AGAIN = 1const OT_PUMP_CLOSED = 4const OT_PUMP_IDLE = 0const OT_PUMP_OUTPUT_PENDING = 2const OT_PUMP_WAIT_UNTIL = 3const OT_RENDERER_ATTACHED = -17const OT_RENDERER_NOT_ATTACHED = -18const OT_RENDER_FAILED = 3const OT_RENDER_PENDING = 1const OT_RENDER_PRESENTED = 0const OT_RENDER_SKIPPED = 2const OT_SCENE_ALIGN_CENTER = 1const OT_SCENE_ALIGN_LEFT = 0const OT_SCENE_ALIGN_RIGHT = 2const OT_SCENE_ARROW = 4const OT_SCENE_BOX = 1const OT_SCENE_CUSTOM = 6const OT_SCENE_EDITOR = 5const OT_SCENE_FRAME_DONE = 0const OT_SCENE_FRAME_LAYOUT_CHANGED = 3const OT_SCENE_FRAME_RECORD = 4const OT_SCENE_FRAME_RESIZE = 2const OT_SCENE_FRAME_UPDATE = 1const OT_SCENE_FRAME_YIELD = 5const OT_SCENE_GEOMETRY_PAINT = 1const OT_SCENE_GEOMETRY_PUBLIC = 2const OT_SCENE_HOOK_IDLE_UPDATE = 64const OT_SCENE_HOOK_LAYOUT_CHANGED = 4const OT_SCENE_HOOK_RENDER_AFTER = 16const OT_SCENE_HOOK_RENDER_BEFORE = 8const OT_SCENE_HOOK_RENDER_SELF = 32const OT_SCENE_HOOK_RESIZE = 2const OT_SCENE_HOOK_UPDATE = 1const OT_SCENE_IMAGE = 8const OT_SCENE_MUTATIONS_MAX = 4096const OT_SCENE_PROPERTY_BACKGROUND = 64const OT_SCENE_PROPERTY_BORDER = 16const OT_SCENE_PROPERTY_BORDER_COLOR = 128const OT_SCENE_PROPERTY_BORDER_STYLE = 256const OT_SCENE_PROPERTY_BYTES_MAX = 360448const OT_SCENE_PROPERTY_FOCUSABLE = 512const OT_SCENE_PROPERTY_FOCUSED_BORDER_COLOR = 1024const OT_SCENE_PROPERTY_OPACITY = 2const OT_SCENE_PROPERTY_RECORD_MAX = 88const OT_SCENE_PROPERTY_RESET_BORDER_CHARACTERS = 4096const OT_SCENE_PROPERTY_SHOULD_FILL = 32const OT_SCENE_PROPERTY_STYLE = 2048const OT_SCENE_PROPERTY_TRANSLATE_X = 4const OT_SCENE_PROPERTY_TRANSLATE_Y = 8const OT_SCENE_PROPERTY_Z_INDEX = 1const OT_SCENE_RECORD_BYTES_MAX = 67108864const OT_SCENE_RECORD_COLOR_MATRIX = 7const OT_SCENE_RECORD_DRAW = 1const OT_SCENE_RECORD_EDITOR_VIEW = 9const OT_SCENE_RECORD_GRAYSCALE = 6const OT_SCENE_RECORD_GRAYSCALE_BACKGROUND = 2const OT_SCENE_RECORD_GRAYSCALE_FOREGROUND = 1const OT_SCENE_RECORD_GRAYSCALE_SUPERSAMPLED = 4const OT_SCENE_RECORD_GRID = 3const OT_SCENE_RECORD_IMAGE = 11const OT_SCENE_RECORD_PACKED = 4const OT_SCENE_RECORD_PHASE_AFTER = 2const OT_SCENE_RECORD_PHASE_BEFORE = 0const OT_SCENE_RECORD_PHASE_SELF = 1const OT_SCENE_RECORD_SCENE_TEXT = 10const OT_SCENE_RECORD_SLOT = 0const OT_SCENE_RECORD_STACK = 2const OT_SCENE_RECORD_SUPERSAMPLE = 5const OT_SCENE_RECORD_TEXT_VIEW = 8const OT_SCENE_RECORD_UNICODE = 12const OT_SCENE_ROOT = 0const OT_SCENE_SLIDER = 3const OT_SCENE_TEXT = 2const OT_SCENE_TEXT_BACKGROUND = 2const OT_SCENE_TEXT_FOREGROUND = 1const OT_SCENE_TEXT_LINK = 4const OT_SCENE_TEXT_SELECTION_BACKGROUND = 1const OT_SCENE_TEXT_SELECTION_CELL = 0const OT_SCENE_TEXT_SELECTION_FOREGROUND = 2const OT_SCENE_TEXT_SELECTION_LINE = 2const OT_SCENE_TEXT_SELECTION_RESET = 0const OT_SCENE_TEXT_SELECTION_SET = 1const OT_SCENE_TEXT_SELECTION_UPDATE = 2const OT_SCENE_TEXT_SELECTION_WORD = 1const OT_SCENE_TEXT_VIEW = 7const OT_SCENE_WRAP_CHAR = 1const OT_SCENE_WRAP_NONE = 0const OT_SCENE_WRAP_WORD = 2const OT_SELECTION_CELL = 0const OT_SELECTION_LINE = 2const OT_SELECTION_OCCUPANCY_BOUNDARY = 1const OT_SELECTION_OCCUPANCY_CELL = 0const OT_SELECTION_WORD = 1const OT_SELECT_DOCUMENT_RESET = 2const OT_SELECT_DOCUMENT_SET = 0const OT_SELECT_DOCUMENT_UPDATE = 1const OT_SELECT_VIEWPORT_RESET = 5const OT_SELECT_VIEWPORT_SET = 3const OT_SELECT_VIEWPORT_UPDATE = 4const OT_SESSION_BUFFER_CURRENT = 0const OT_SESSION_BUFFER_NEXT = 1const OT_SESSION_CANCELLED_STATE = 4const OT_SESSION_CLOSED = -12const OT_SESSION_CLOSED_STATE = 2const OT_SESSION_CLOSING = 1const OT_SESSION_CONTROL_PACKET_BYTES = 4096const OT_SESSION_ENV_BYTES_MAX = 65536const OT_SESSION_ENV_ENTRIES_MAX = 256const OT_SESSION_FAILED = 3const OT_SESSION_OPEN = 0const OT_SESSION_REMOTE_AUTO = 0const OT_SESSION_REMOTE_LOCAL = 1const OT_SESSION_REMOTE_REMOTE = 2const OT_STALE_FRAME = -25const OT_STALE_HANDLE = -9const OT_STALE_LEASE = -23const OT_STALE_OUTPUT = -14const OT_STYLE_BORDER = 3const OT_STYLE_BORDER_WIDTH = 0const OT_STYLE_DIMENSION = 4const OT_STYLE_DISABLE_FLEX_SHRINK = 1const OT_STYLE_ENUM = 0const OT_STYLE_ENUM_ALIGN_CONTENT = 3const OT_STYLE_ENUM_ALIGN_CONTENT_MAX = 8const OT_STYLE_ENUM_ALIGN_ITEMS = 4const OT_STYLE_ENUM_ALIGN_ITEMS_MAX = 8const OT_STYLE_ENUM_ALIGN_SELF = 5const OT_STYLE_ENUM_ALIGN_SELF_MAX = 8const OT_STYLE_ENUM_BOX_SIZING = 10const OT_STYLE_ENUM_BOX_SIZING_MAX = 1const OT_STYLE_ENUM_DIRECTION = 0const OT_STYLE_ENUM_DIRECTION_MAX = 2const OT_STYLE_ENUM_DISPLAY = 9const OT_STYLE_ENUM_DISPLAY_MAX = 1const OT_STYLE_ENUM_FLEX_DIRECTION = 1const OT_STYLE_ENUM_FLEX_DIRECTION_MAX = 3const OT_STYLE_ENUM_FLEX_WRAP = 7const OT_STYLE_ENUM_FLEX_WRAP_MAX = 2const OT_STYLE_ENUM_JUSTIFY_CONTENT = 2const OT_STYLE_ENUM_JUSTIFY_CONTENT_MAX = 5const OT_STYLE_ENUM_OVERFLOW = 8const OT_STYLE_ENUM_OVERFLOW_MAX = 2const OT_STYLE_ENUM_POSITION_TYPE = 6const OT_STYLE_ENUM_POSITION_TYPE_MAX = 2const OT_STYLE_FLAGS_NONE = 0const OT_STYLE_FLOAT = 1const OT_STYLE_FLOAT_ASPECT_RATIO = 3const OT_STYLE_FLOAT_FLEX = 0const OT_STYLE_FLOAT_FLEX_GROW = 1const OT_STYLE_FLOAT_FLEX_SHRINK = 2const OT_STYLE_VALUE = 2const OT_STYLE_VALUE_FLEX_BASIS = 6const OT_STYLE_VALUE_GAP = 10const OT_STYLE_VALUE_HEIGHT = 1const OT_STYLE_VALUE_MARGIN = 7const OT_STYLE_VALUE_MAX_HEIGHT = 5const OT_STYLE_VALUE_MAX_WIDTH = 4const OT_STYLE_VALUE_MIN_HEIGHT = 3const OT_STYLE_VALUE_MIN_WIDTH = 2const OT_STYLE_VALUE_PADDING = 8const OT_STYLE_VALUE_POSITION = 9const OT_STYLE_VALUE_WIDTH = 0const OT_TERMINAL_ACTIVE = 2const OT_TERMINAL_ALTERNATE_SCREEN = 1const OT_TERMINAL_CANCELLED = 9const OT_TERMINAL_CLEAR_ON_CLOSE = 8const OT_TERMINAL_CLOSING = 6const OT_TERMINAL_FAILED = 8const OT_TERMINAL_MOUSE = 2const OT_TERMINAL_MOUSE_MOVEMENT = 4const OT_TERMINAL_RESTORED = 7const OT_TERMINAL_RESUMING = 5const OT_TERMINAL_SETTING_UP = 1const OT_TERMINAL_SUSPENDED = 4const OT_TERMINAL_SUSPENDING = 3const OT_TERMINAL_UNINITIALIZED = 0const OT_TEXT_REPLACEMENT_BYTES_MAX = 4194304const OT_TEXT_REPLACEMENT_CHUNKS_MAX = 4096const OT_TEXT_REPLACEMENT_COUNT_MAX = 256const OT_TEXT_REPLACEMENT_URL_BYTES_MAX = 1048576const OT_TEXT_VIEW_FIRST_LINE_OFFSET = 2const OT_TEXT_VIEW_TAB_INDICATOR = 3const OT_TEXT_VIEW_TEXT_ALIGN = 5const OT_TEXT_VIEW_TRUNCATE = 4const OT_TEXT_VIEW_WRAP_MODE = 1const OT_TEXT_VIEW_WRAP_WIDTH = 0const OT_UNIT_AUTO = 3const OT_UNIT_PERCENT = 2const OT_UNIT_POINT = 1const OT_UNIT_UNDEFINED = 0const OT_UNSUPPORTED_RESOURCE = -24const OT_UNSUPPORTED_VERSION = -2const OT_WIDTH_METHOD_NO_ZWJ = 2const OT_WIDTH_METHOD_UNICODE = 1const OT_WIDTH_METHOD_UNICODE_WIDE = 3const OT_WIDTH_METHOD_WCWIDTH = 0const OT_WRONG_CONTEXT = -7const OT_WRONG_KIND = -8const OT_WRONG_SESSION = -10const OT_WRONG_THREAD = -4function ot_buffer_acquire_lease(ot_context *context, const ot_handle *buffer, ot_buffer_lease_snapshot *out_snapshot): ot_statusfunction ot_buffer_color_matrix(ot_context *, const ot_handle *, const ot_scene_frame_request *, const float *matrix, uint32_t matrix_count, const float *mask, uint32_t mask_count, const float *strength, uint32_t channel): ot_statusfunction ot_buffer_create(ot_context *context, const ot_buffer_options *options, ot_handle *out_buffer): ot_statusfunction ot_buffer_destroy(ot_context *context, const ot_handle *buffer): ot_statusfunction ot_buffer_draw(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, const ot_buffer_draw_header *options, const ot_handle *source, const uint8_t *text, uint32_t text_len, const uint8_t *bottom_title, uint32_t bottom_title_len): ot_statusfunction ot_buffer_draw_editor_view(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *view, int32_t x, int32_t y): ot_statusfunction ot_buffer_draw_grayscale(ot_context *, const ot_handle *, const ot_scene_frame_request *, const float *data, uint32_t sample_count, int32_t x, int32_t y, uint32_t width, uint32_t height, const uint16_t *foreground, const uint16_t *background, uint32_t supersampled): ot_statusfunction ot_buffer_draw_grid(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, const ot_buffer_grid_options *options, const int32_t *columns, uint32_t column_count, const int32_t *rows, uint32_t row_count): ot_statusfunction ot_buffer_draw_image(ot_context *, const ot_handle *target, const ot_scene_frame_request *frame, const ot_handle *image, const ot_image_draw_options *, uint32_t *out_drawn): ot_statusfunction ot_buffer_draw_packed(ot_context *, const ot_handle *, const ot_scene_frame_request *, const uint8_t *data, uint32_t byte_count, int32_t x, int32_t y, uint32_t width, uint32_t height): ot_statusfunction ot_buffer_draw_scene_text(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *node, int32_t x, int32_t y): ot_statusfunction ot_buffer_draw_supersample(ot_context *, const ot_handle *, const ot_scene_frame_request *, const uint8_t *data, uint32_t byte_count, int32_t x, int32_t y, uint32_t format, uint32_t stride): ot_statusfunction ot_buffer_draw_text_view(ot_context *, const ot_handle *target, const ot_scene_frame_request *, const ot_handle *view, int32_t x, int32_t y): ot_statusfunction ot_buffer_draw_unicode(ot_context *, const ot_handle *target, const ot_scene_frame_request *frame, const ot_handle *unicode, uint32_t index, int32_t x, int32_t y, const uint16_t foreground[4], const uint16_t background[4], uint32_t attributes): ot_statusfunction ot_buffer_lease_get_real_char_size(ot_context *context, const ot_handle *lease, uint32_t add_line_breaks, uint32_t *out_size): ot_statusfunction ot_buffer_lease_release(ot_context *context, const ot_handle *lease): ot_statusfunction ot_buffer_lease_validate(ot_context *context, const ot_handle *lease): ot_statusfunction ot_buffer_lease_write_resolved_chars(ot_context *context, const ot_handle *lease, uint8_t *bytes, uint32_t capacity, uint32_t add_line_breaks, uint8_t *cell_lengths, uint32_t cell_capacity, uint32_t *out_written): ot_statusfunction ot_buffer_resize(ot_context *context, const ot_handle *buffer, uint32_t width, uint32_t height): ot_statusfunction ot_buffer_stack(ot_context *context, const ot_handle *target, const ot_scene_frame_request *frame, uint32_t operation, int32_t x, int32_t y, uint32_t width, uint32_t height, const float *opacity, float *out_opacity): ot_statusfunction ot_clipboard_clear_operation_start(ot_context *context, uint8_t selection, uint32_t timeout_ms, ot_handle *out_operation): uint8_tfunction ot_clipboard_operation_cancel(ot_context *context, const ot_handle *operation): uint8_tfunction ot_clipboard_operation_destroy(ot_context *context, const ot_handle *operation): uint8_tfunction ot_clipboard_operation_poll(ot_context *context, const ot_handle *operation): uint8_tfunction ot_clipboard_operation_result_data_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_tfunction ot_clipboard_operation_result_data_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_tfunction ot_clipboard_operation_result_diagnostic_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_tfunction ot_clipboard_operation_result_diagnostic_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_tfunction ot_clipboard_operation_result_error_code(ot_context *context, const ot_handle *operation, uint32_t *out_error_code): uint8_tfunction ot_clipboard_operation_result_mime_copy(ot_context *context, const ot_handle *operation, uint8_t *out_bytes, uint32_t capacity): uint8_tfunction ot_clipboard_operation_result_mime_length(ot_context *context, const ot_handle *operation, uint32_t *out_length): uint8_tfunction ot_clipboard_read_operation_start(ot_context *context, const uint8_t *request, uint32_t request_length, uint8_t selection, uint32_t max_bytes, uint32_t max_image_pixels, uint32_t max_conversion_bytes, uint32_t timeout_ms, ot_handle *out_operation): uint8_tfunction ot_clipboard_service_begin_shutdown(ot_context *context): uint8_tfunction ot_clipboard_service_create(ot_context *context, uint32_t max_operations, uint32_t max_provider_transfers, const uint8_t *wayland_seat, uint32_t wayland_seat_length): int32_tfunction ot_clipboard_service_destroy(ot_context *context): uint8_tfunction ot_clipboard_service_drain(ot_context *context): uint8_tfunction ot_clipboard_service_poll_shutdown(ot_context *context): uint8_tfunction ot_clipboard_write_operation_start(ot_context *context, const uint8_t *text, uint32_t text_length, uint8_t selection, uint32_t timeout_ms, ot_handle *out_operation): uint8_tfunction ot_context_abi_version(void): uint32_tfunction ot_context_create(const ot_context_options *options, ot_context **out_context): ot_statusfunction ot_context_destroy(ot_context *context): ot_statusfunction ot_context_drain_diagnostics(ot_context *context, ot_diagnostic *records, uint32_t capacity, ot_diagnostic_drain *out_drain): ot_statusfunction ot_context_get_last_error(ot_context *context, ot_context_error *out_error): ot_statusfunction ot_context_get_link_url(ot_context *context, uint32_t link_id, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_context_set_edit_event_callback(ot_context *, ot_edit_event_callback): ot_statusfunction ot_edit_buffer_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_statusfunction ot_edit_buffer_create(ot_context *, const ot_edit_buffer_options *, ot_handle *out_edit_buffer): ot_statusfunction ot_edit_buffer_delete_range(ot_context *, const ot_handle *edit_buffer, uint32_t start_row, uint32_t start_col, uint32_t end_row, uint32_t end_col): ot_statusfunction ot_edit_buffer_destroy(ot_context *, const ot_handle *edit_buffer): ot_statusfunction ot_edit_buffer_get_highlights(ot_context *, const ot_handle *, uint32_t line, ot_edit_highlight *highlights, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_edit_buffer_get_info(ot_context *, const ot_handle *edit_buffer, ot_edit_buffer_info *out_info): ot_statusfunction ot_edit_buffer_get_position(ot_context *, const ot_handle *, uint32_t query, uint32_t a, uint32_t b, ot_edit_position *out_position): ot_statusfunction ot_edit_buffer_get_range(ot_context *, const ot_handle *, uint32_t by_coords, uint32_t start_row, uint32_t start_col, uint32_t end_row, uint32_t end_col, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_edit_buffer_get_text(ot_context *, const ot_handle *edit_buffer, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_edit_buffer_highlight(ot_context *, const ot_handle *, uint32_t operation, uint32_t argument, const ot_edit_highlight *highlight): ot_statusfunction ot_edit_buffer_history(ot_context *, const ot_handle *, uint32_t redo, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_edit_buffer_insert_text(ot_context *, const ot_handle *edit_buffer, const uint8_t *bytes, uint32_t byte_count): ot_statusfunction ot_edit_buffer_set_cursor(ot_context *, const ot_handle *edit_buffer, uint32_t row, uint32_t col): ot_statusfunction ot_edit_buffer_set_defaults(ot_context *, const ot_handle *, uint32_t mask, const ot_editor_style *): ot_statusfunction ot_edit_buffer_set_syntax_style(ot_context *, const ot_handle *edit_buffer, const ot_handle *style): ot_statusfunction ot_edit_buffer_set_tab_width(ot_context *, const ot_handle *edit_buffer, uint32_t width): ot_statusfunction ot_edit_buffer_set_text(ot_context *, const ot_handle *edit_buffer, const uint8_t *bytes, uint32_t byte_count, uint32_t preserve_history): ot_statusfunction ot_editor_view_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_statusfunction ot_editor_view_create(ot_context *, const ot_handle *edit_buffer, uint32_t width, uint32_t height, ot_handle *out_view): ot_statusfunction ot_editor_view_destroy(ot_context *, const ot_handle *view): ot_statusfunction ot_editor_view_get_info(ot_context *, const ot_handle *, uint32_t follow_cursor, ot_editor_view_info *out_info): ot_statusfunction ot_editor_view_get_lines(ot_context *, const ot_handle *, uint32_t logical, ot_scene_text_line *lines, uint32_t capacity, ot_editor_measure *out_info): ot_statusfunction ot_editor_view_get_position(ot_context *, const ot_handle *, uint32_t query, ot_editor_position *out_position): ot_statusfunction ot_editor_view_get_selected_text(ot_context *, const ot_handle *, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_editor_view_get_selection(ot_context *, const ot_handle *, ot_editor_view_info *out_info): ot_statusfunction ot_editor_view_get_viewport(ot_context *, const ot_handle *, ot_editor_viewport *out_viewport): ot_statusfunction ot_editor_view_measure(ot_context *, const ot_handle *, uint32_t width, uint32_t height, ot_editor_measure *out_info): ot_statusfunction ot_editor_view_replace_selection(ot_context *, const ot_handle *, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_steps): ot_statusfunction ot_editor_view_select(ot_context *, const ot_handle *, const ot_editor_selection *, uint32_t *out_changed): ot_statusfunction ot_editor_view_set_placeholder(ot_context *, const ot_handle *, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *chunks, uint32_t chunk_count): ot_statusfunction ot_editor_view_set_scroll_margin(ot_context *, const ot_handle *, float margin): ot_statusfunction ot_editor_view_set_tab_color(ot_context *, const ot_handle *, const uint16_t color[4]): ot_statusfunction ot_editor_view_set_viewport(ot_context *, const ot_handle *, const ot_editor_viewport *, uint32_t size_only, uint32_t move_cursor): ot_statusfunction ot_embedded_terminal_command(ot_context *, const ot_handle *terminal, uint32_t command, int32_t argument): ot_statusfunction ot_embedded_terminal_compose(ot_context *, const ot_handle *terminal, const ot_handle *target, const ot_scene_frame_request *frame, int32_t x, int32_t y): ot_statusfunction ot_embedded_terminal_create(ot_context *, const ot_embedded_terminal_options *, ot_handle *out_terminal): ot_statusfunction ot_embedded_terminal_cursor_get(ot_context *, const ot_handle *terminal, ot_embedded_terminal_cursor *out_cursor): ot_statusfunction ot_embedded_terminal_destroy(ot_context *, const ot_handle *terminal): ot_statusfunction ot_embedded_terminal_drain_responses(ot_context *, const ot_handle *terminal, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_encode_focus(ot_context *, const ot_handle *terminal, uint32_t focused, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_encode_key(ot_context *, const ot_handle *terminal, const ot_embedded_terminal_key *, const uint8_t *key, uint32_t key_count, const uint8_t *text, uint32_t text_count, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_encode_mouse(ot_context *, const ot_handle *terminal, const ot_embedded_terminal_mouse *, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_encode_paste(ot_context *, const ot_handle *terminal, const uint8_t *input, uint32_t input_count, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_get_selected_text(ot_context *, const ot_handle *terminal, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_embedded_terminal_resize(ot_context *, const ot_handle *terminal, uint32_t cols, uint32_t rows): ot_statusfunction ot_embedded_terminal_set_selection(ot_context *, const ot_handle *terminal, uint32_t start_x, uint32_t start_y, uint32_t end_x, uint32_t end_y): ot_statusfunction ot_embedded_terminal_write(ot_context *, const ot_handle *terminal, const uint8_t *bytes, uint32_t byte_count): ot_statusfunction ot_image_clone(ot_context *destination, ot_context *source, const ot_handle *image, ot_handle *out_image): ot_statusfunction ot_image_composite(ot_context *, const ot_handle *base, const ot_handle *overlay, int32_t left, int32_t top, uint32_t blend, uint8_t opacity, ot_handle *out_image): ot_statusfunction ot_image_copy_pixels(ot_context *, const ot_handle *image, uint8_t *destination, uint64_t byte_count, uint32_t stride, uint32_t format): ot_statusfunction ot_image_copy_png(ot_context *, const ot_handle *image, uint8_t *destination, uint64_t capacity, uint64_t *out_byte_count): ot_statusfunction ot_image_create_pixels(ot_context *, const uint8_t *pixels, uint64_t byte_count, uint32_t width, uint32_t height, uint32_t stride, uint32_t format, uint32_t alpha, ot_handle *out_image): ot_statusfunction ot_image_decode(ot_context *, const uint8_t *bytes, uint64_t byte_count, ot_handle *out_image): ot_statusfunction ot_image_destroy(ot_context *, const ot_handle *image): ot_statusfunction ot_image_extend(ot_context *, const ot_handle *image, uint32_t top, uint32_t right, uint32_t bottom, uint32_t left, const uint8_t *background_rgba, ot_handle *out_image): ot_statusfunction ot_image_extract(ot_context *, const ot_handle *image, uint32_t left, uint32_t top, uint32_t width, uint32_t height, ot_handle *out_image): ot_statusfunction ot_image_get_info(ot_context *, const ot_handle *image, ot_image_info *out_info): ot_statusfunction ot_image_inspect(ot_context *, const uint8_t *bytes, uint64_t byte_count, ot_image_info *out_info): ot_statusfunction ot_image_pixels_release(ot_context *, const ot_handle *lease): ot_statusfunction ot_image_resize(ot_context *, const ot_handle *image, uint32_t width, uint32_t height, uint32_t filter, ot_handle *out_image): ot_statusfunction ot_image_retain(ot_context *, const ot_handle *image, ot_handle *out_image): ot_statusfunction ot_image_take_pixels(ot_context *, const ot_handle *image, ot_image_pixels *out_pixels): ot_statusfunction ot_image_transform(ot_context *, const ot_handle *image, uint32_t operation, ot_handle *out_image): ot_statusfunction ot_image_update_pixels(ot_context *, const ot_handle *image, const uint8_t *pixels, uint64_t byte_count, uint32_t stride, uint32_t format, uint32_t alpha): ot_statusfunction ot_scene_create_node(ot_context *, const ot_handle *session, uint32_t kind, uint32_t num, ot_handle *out_node): ot_statusfunction ot_scene_destroy_node(ot_context *, const ot_handle *node): ot_statusfunction ot_scene_flush(ot_context *, const uint8_t *updates, uint32_t byte_count, uint32_t *out_applied): ot_statusfunction ot_scene_frame_acquire_buffer_lease(ot_context *, const ot_handle *session, const ot_scene_frame_request *frame_request, uint32_t which, ot_buffer_lease_snapshot *out_snapshot): ot_statusfunction ot_scene_frame_cancel(ot_context *, const ot_handle *session, uint64_t frame_id): ot_statusfunction ot_scene_frame_commit(ot_context *, const ot_handle *session, const ot_scene_frame_request *frame_request, uint32_t force, uint32_t *out_status): ot_statusfunction ot_scene_frame_copy_buffer(ot_context *, const ot_handle *session, const ot_scene_frame_request *, const ot_handle *target): ot_statusfunction ot_scene_frame_draw_buffer(ot_context *context, const ot_handle *session, const ot_scene_frame_request *frame_request, const ot_handle *source, int32_t x, int32_t y): ot_statusfunction ot_scene_frame_get_paint_slots(ot_context *, const ot_handle *session, const ot_scene_frame_request *record_request, ot_scene_paint_slot *out_slots, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_scene_frame_step_with_geometry(ot_context *, const ot_handle *session, const ot_scene_frame_request *previous, const ot_scene_frame_options *, uint32_t max_work_items, const uint8_t *recording, uint32_t recording_length, ot_scene_frame_request *out_request, ot_scene_frame_geometry *out_geometry): ot_statusfunction ot_scene_get_cursor_state(ot_context *, const ot_handle *session, ot_scene_cursor_state *out_state): ot_statusfunction ot_scene_get_layout(ot_context *, const ot_handle *node, uint32_t observation, ot_scene_layout *out_layout): ot_statusfunction ot_scene_get_selected_text(ot_context *, const ot_handle *node, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_scene_get_slider_thumb(ot_context *, const ot_handle *node, ot_scene_slider_thumb *out_thumb): ot_statusfunction ot_scene_get_stats(ot_context *, const ot_handle *session, ot_scene_stats *out_stats): ot_statusfunction ot_scene_get_style(ot_context *, const ot_handle *node, uint32_t group, uint32_t kind, uint32_t edge, ot_scene_style_value *out_value): ot_statusfunction ot_scene_get_text(ot_context *, const ot_handle *node, uint8_t *bytes, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_scene_get_text_info(ot_context *, const ot_handle *node, ot_scene_text_info *out_info): ot_statusfunction ot_scene_get_text_lines(ot_context *, const ot_handle *node, uint32_t first_line, ot_scene_text_line *lines, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_scene_get_text_selection(ot_context *, const ot_handle *node, uint64_t *out_packed): ot_statusfunction ot_scene_has_measure(ot_context *, const ot_handle *node, uint32_t *out_enabled): ot_statusfunction ot_scene_hit_test(ot_context *, const ot_handle *session, int32_t x, int32_t y, uint32_t *out_num): ot_statusfunction ot_scene_mark_dirty(ot_context *, const ot_handle *node): ot_statusfunction ot_scene_measure_layout(ot_context *, const ot_handle *session, const ot_handle *root): ot_statusfunction ot_scene_move_node(ot_context *, const ot_handle *node, const ot_handle *parent, uint32_t index): ot_statusfunction ot_scene_paint(ot_context *, const ot_handle *session, const uint16_t background[4], uint32_t use_mouse, uint32_t excluded_hit_num, ot_scene_frame_request *out_frame): ot_statusfunction ot_scene_set_arrow(ot_context *, const ot_handle *node, const ot_scene_arrow_options *, const uint8_t *text, uint32_t byte_count): ot_statusfunction ot_scene_set_box_details(ot_context *, const ot_handle *node, const ot_scene_box_details *, const uint8_t *title, uint32_t title_bytes, const uint8_t *bottom_title, uint32_t bottom_title_bytes): ot_statusfunction ot_scene_set_editor_options(ot_context *, const ot_handle *node, const ot_scene_editor_options *): ot_statusfunction ot_scene_set_editor_view(ot_context *, const ot_handle *node, const ot_handle *view): ot_statusfunction ot_scene_set_focus(ot_context *, const ot_handle *node, uint32_t focused): ot_statusfunction ot_scene_set_hooks(ot_context *, const ot_handle *node, const ot_scene_hooks *): ot_statusfunction ot_scene_set_image(ot_context *, const ot_handle *node, const ot_handle *image, uint32_t fit, uint32_t protocol, const ot_handle *buffer): ot_statusfunction ot_scene_set_measure(ot_context *, const ot_handle *node, ot_scene_measure_callback): ot_statusfunction ot_scene_set_paint(ot_context *, const ot_handle *node, const ot_scene_paint_options *): ot_statusfunction ot_scene_set_slider(ot_context *, const ot_handle *node, const ot_scene_slider_options *): ot_statusfunction ot_scene_set_style(ot_context *, const ot_handle *node, uint32_t group, uint32_t kind, uint32_t edge, uint32_t unit, float value, uint32_t flags): ot_statusfunction ot_scene_set_styled_text(ot_context *, const ot_handle *node, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *chunks, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count): ot_statusfunction ot_scene_set_surface(ot_context *, const ot_handle *node, const ot_handle *buffer): ot_statusfunction ot_scene_set_text(ot_context *, const ot_handle *node, const uint8_t *bytes, uint32_t byte_count): ot_statusfunction ot_scene_set_text_options(ot_context *, const ot_handle *node, const ot_scene_text_options *): ot_statusfunction ot_scene_set_text_selection(ot_context *, const ot_handle *node, const ot_scene_text_selection_options *, uint32_t *out_changed): ot_statusfunction ot_scene_set_text_view(ot_context *, const ot_handle *node, const ot_handle *view): ot_statusfunction ot_scene_set_text_view_paint(ot_context *, const ot_handle *node, uint32_t enabled): ot_statusfunction ot_scene_set_viewport(ot_context *, const ot_handle *node, const ot_handle *viewport): ot_statusfunction ot_session_acquire_buffer_lease(ot_context *context, const ot_handle *session, uint32_t which, ot_buffer_lease_snapshot *out_snapshot): ot_statusfunction ot_session_attach_renderer(ot_context *context, const ot_handle *session, const ot_session_renderer_options *options): ot_statusfunction ot_session_attach_renderer_with_env(ot_context *context, const ot_handle *session, const ot_session_renderer_env_options *options, const uint8_t *environment): ot_statusfunction ot_session_cancel(ot_context *context, const ot_handle *session): ot_statusfunction ot_session_cancel_kitty_image_transport(ot_context *, const ot_handle *session, uint32_t failed): ot_statusfunction ot_session_clipboard(ot_context *context, const ot_handle *session, uint32_t target, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_written): ot_statusfunction ot_session_close(ot_context *context, const ot_handle *session): ot_statusfunction ot_session_complete_output(ot_context *context, const ot_handle *session, const ot_output_ticket *ticket, uint32_t success): ot_statusfunction ot_session_control(ot_context *context, const ot_handle *session, const ot_session_control_options *options, const uint8_t *bytes, uint32_t byte_count): ot_statusfunction ot_session_create(ot_context *context, const ot_session_options *options, ot_handle *out_session): ot_statusfunction ot_session_destroy(ot_context *context, const ot_handle *session): ot_statusfunction ot_session_drain_output(ot_context *context, const ot_handle *session, uint32_t max_bytes, uint32_t *out_written, void *user_data, ot_output_write_callback writer): ot_statusfunction ot_session_drain_stdout(ot_context *context, const ot_handle *session, uint32_t max_bytes, uint32_t *out_written): ot_statusfunction ot_session_draw_buffer(ot_context *context, const ot_handle *session, const ot_handle *source, int32_t x, int32_t y): ot_statusfunction ot_session_dump_hit_grid(ot_context *, const ot_handle *session): ot_statusfunction ot_session_get_capabilities(ot_context *context, const ot_handle *session, ot_session_capabilities *out_capabilities): ot_statusfunction ot_session_get_kitty_image_transport(ot_context *, const ot_handle *session, ot_session_kitty_image_transport *out_status): ot_statusfunction ot_session_get_link_id(ot_context *context, const ot_handle *session, int32_t x, int32_t y, uint32_t *out_link_id): ot_statusfunction ot_session_get_renderer_state(ot_context *context, const ot_handle *session, ot_session_renderer_state *out_state): ot_statusfunction ot_session_get_state(ot_context *context, const ot_handle *session, uint32_t *out_state): ot_statusfunction ot_session_get_terminal_state(ot_context *context, const ot_handle *session, uint32_t *out_phase): ot_statusfunction ot_session_get_write_limit(ot_context *context, const ot_handle *session, uint64_t *out_bytes): ot_statusfunction ot_session_notification(ot_context *, const ot_handle *, const uint8_t *message, uint32_t message_len, const uint8_t *title, uint32_t title_len, uint32_t *out_written): ot_statusfunction ot_session_poll_kitty_image_transport(ot_context *, const ot_handle *session, uint64_t now_ns, uint32_t *out_retry): ot_statusfunction ot_session_process_kitty_image_reply(ot_context *, const ot_handle *session, const uint8_t *bytes, uint32_t byte_count, uint32_t *out_result): ot_statusfunction ot_session_pump(ot_context *context, const ot_handle *session, uint64_t now_ns, uint32_t work_budget, ot_session_pump_result *out_result): ot_statusfunction ot_session_pump_exit(ot_context *context, const ot_handle *session, uint32_t *out_status): ot_statusfunction ot_session_read_output(ot_context *context, const ot_handle *session, uint8_t *bytes, uint32_t capacity, ot_output_ticket *out_ticket): ot_statusfunction ot_session_render(ot_context *context, const ot_handle *session, uint32_t force, uint32_t *out_result): ot_statusfunction ot_session_render_split(ot_context *, const ot_handle *session, const ot_scene_frame_request *, const ot_split_snapshot *, uint32_t count, uint32_t pinned_render_offset, uint32_t force, uint32_t *out_status): ot_statusfunction ot_session_resize_renderer(ot_context *context, const ot_handle *session, uint32_t width, uint32_t height): ot_statusfunction ot_session_resume(ot_context *context, const ot_handle *session): ot_statusfunction ot_session_set_debug_overlay(ot_context *, const ot_handle *session, uint32_t enabled, uint32_t corner): ot_statusfunction ot_session_set_image_resolution(ot_context *, const ot_handle *session, uint32_t terminal_width, uint32_t terminal_height, uint32_t pixel_width, uint32_t pixel_height): ot_statusfunction ot_session_set_kitty_image_transport(ot_context *, const ot_handle *session, uint32_t mode): ot_statusfunction ot_session_set_palette_state(ot_context *, const ot_handle *, const uint16_t *palette, uint32_t color_count, const uint16_t *foreground, const uint16_t *background, uint32_t epoch): ot_statusfunction ot_session_set_screen(ot_context *, const ot_handle *session, uint32_t alternate, uint32_t width, uint32_t height, const uint8_t *trailing_output, uint32_t byte_count): ot_statusfunction ot_session_setup_terminal(ot_context *context, const ot_handle *session, const ot_session_terminal_options *options): ot_statusfunction ot_session_split_control(ot_context *, const ot_handle *session, const ot_split_control *, uint32_t *out_offset): ot_statusfunction ot_session_start_kitty_file_probe(ot_context *, const ot_handle *session): ot_statusfunction ot_session_suspend(ot_context *context, const ot_handle *session): ot_statusfunction ot_session_sync_detached(ot_context *, const ot_handle *session, const ot_handle *parent): ot_statusfunction ot_session_update_memory_stats(ot_context *, const ot_handle *session, uint32_t heap_used, uint32_t heap_total, uint32_t array_buffers): ot_statusfunction ot_session_update_stats(ot_context *, const ot_handle *session, double overall_ms, uint32_t fps, double callback_ms): ot_statusfunction ot_session_write(ot_context *context, const ot_handle *session, const uint8_t *bytes, uint32_t byte_count): ot_statusfunction ot_syntax_style_create(ot_context *, ot_handle *out_style): ot_statusfunction ot_syntax_style_destroy(ot_context *, const ot_handle *style): ot_statusfunction ot_syntax_style_get_count(ot_context *, const ot_handle *, uint32_t *out_count): ot_statusfunction ot_syntax_style_register(ot_context *, const ot_handle *, const uint8_t *name, uint32_t byte_count, const ot_editor_style *, uint32_t *out_id): ot_statusfunction ot_syntax_style_resolve(ot_context *, const ot_handle *, const uint8_t *name, uint32_t byte_count, uint32_t *out_id): ot_statusfunction ot_terminal_flush_input(void): ot_statusfunction ot_text_buffer_append(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count): ot_statusfunction ot_text_buffer_clear(ot_context *, const ot_handle *, uint32_t reset): ot_statusfunction ot_text_buffer_create(ot_context *, const ot_edit_buffer_options *, ot_handle *out_buffer): ot_statusfunction ot_text_buffer_destroy(ot_context *, const ot_handle *): ot_statusfunction ot_text_buffer_get_highlights(ot_context *, const ot_handle *, uint32_t line, ot_edit_highlight *, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_text_buffer_get_info(ot_context *, const ot_handle *, ot_text_buffer_info *): ot_statusfunction ot_text_buffer_get_range(ot_context *, const ot_handle *, uint32_t start, uint32_t end, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_text_buffer_get_text(ot_context *, const ot_handle *, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_text_buffer_highlight(ot_context *, const ot_handle *, uint32_t operation, uint32_t argument, const ot_edit_highlight *): ot_statusfunction ot_text_buffer_replace_styled_batch(ot_context *, const ot_text_buffer_replacement *, uint32_t count, const uint8_t *bytes, uint32_t byte_count, const ot_styled_text_chunk *, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count, ot_text_buffer_replacement_info *out): ot_statusfunction ot_text_buffer_set_defaults(ot_context *, const ot_handle *, uint32_t mask, const ot_editor_style *): ot_statusfunction ot_text_buffer_set_styled_text(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count, const ot_styled_text_chunk *, uint32_t chunk_count, const uint8_t *urls, uint32_t url_byte_count): ot_statusfunction ot_text_buffer_set_syntax_style(ot_context *, const ot_handle *, const ot_handle *style): ot_statusfunction ot_text_buffer_set_tab_width(ot_context *, const ot_handle *, uint32_t width): ot_statusfunction ot_text_buffer_set_text(ot_context *, const ot_handle *, const uint8_t *, uint32_t byte_count): ot_statusfunction ot_text_buffer_view_command(ot_context *, const ot_handle *, uint32_t command, uint32_t argument): ot_statusfunction ot_text_buffer_view_create(ot_context *, const ot_handle *buffer, ot_handle *out_view): ot_statusfunction ot_text_buffer_view_destroy(ot_context *, const ot_handle *): ot_statusfunction ot_text_buffer_view_get_info(ot_context *, const ot_handle *, ot_editor_view_info *): ot_statusfunction ot_text_buffer_view_get_lines(ot_context *, const ot_handle *, uint32_t logical, uint32_t first_line, ot_scene_text_line *, uint32_t capacity, ot_editor_measure *): ot_statusfunction ot_text_buffer_view_get_selected_text(ot_context *, const ot_handle *, uint8_t *, uint32_t capacity, uint32_t *out_count): ot_statusfunction ot_text_buffer_view_measure(ot_context *, const ot_handle *, uint32_t width, uint32_t height, ot_editor_measure *): ot_statusfunction ot_text_buffer_view_select(ot_context *, const ot_handle *, const ot_editor_selection *, uint32_t *out_changed): ot_statusfunction ot_text_buffer_view_set_tab_color(ot_context *, const ot_handle *, const uint16_t color[4]): ot_statusfunction ot_text_buffer_view_set_viewport(ot_context *, const ot_handle *, const ot_editor_viewport *, uint32_t size_only): ot_statusfunction ot_unicode_create(ot_context *, const uint8_t *bytes, uint32_t byte_count, uint32_t width_method, ot_handle *out_unicode): ot_statusfunction ot_unicode_destroy(ot_context *, const ot_handle *unicode): ot_statusfunction ot_unicode_get(ot_context *, const ot_handle *unicode, ot_unicode_char *characters, uint32_t capacity, uint32_t *out_count): ot_statusstruct ot_buffer_draw_alphastruct ot_buffer_draw_boxstruct ot_buffer_draw_cellstruct ot_buffer_draw_clearstruct ot_buffer_draw_composestruct ot_buffer_draw_fillstruct ot_buffer_draw_headerstruct ot_buffer_draw_text_recordstruct ot_buffer_grid_optionsstruct ot_buffer_lease_snapshotstruct ot_buffer_optionsstruct ot_context_errorstruct ot_context_optionsstruct ot_diagnosticstruct ot_diagnostic_drainstruct ot_edit_buffer_infostruct ot_edit_buffer_optionsstruct ot_edit_highlightstruct ot_edit_positionstruct ot_editor_measurestruct ot_editor_positionstruct ot_editor_selectionstruct ot_editor_stylestruct ot_editor_view_infostruct ot_editor_viewportstruct ot_embedded_terminal_cursorstruct ot_embedded_terminal_keystruct ot_embedded_terminal_mousestruct ot_embedded_terminal_optionsstruct ot_handlestruct ot_image_draw_optionsstruct ot_image_infostruct ot_image_pixelsstruct ot_output_ticketstruct ot_scene_arrow_optionsstruct ot_scene_box_detailsstruct ot_scene_cursor_statestruct ot_scene_editor_optionsstruct ot_scene_frame_geometrystruct ot_scene_frame_optionsstruct ot_scene_frame_requeststruct ot_scene_hooksstruct ot_scene_layoutstruct ot_scene_paint_optionsstruct ot_scene_paint_slotstruct ot_scene_property_updatestruct ot_scene_record_color_matrixstruct ot_scene_record_drawstruct ot_scene_record_grayscalestruct ot_scene_record_gridstruct ot_scene_record_headerstruct ot_scene_record_imagestruct ot_scene_record_packedstruct ot_scene_record_slotstruct ot_scene_record_stackstruct ot_scene_record_supersamplestruct ot_scene_record_unicodestruct ot_scene_record_viewstruct ot_scene_slider_optionsstruct ot_scene_slider_thumbstruct ot_scene_statsstruct ot_scene_style_propertystruct ot_scene_style_valuestruct ot_scene_text_infostruct ot_scene_text_linestruct ot_scene_text_optionsstruct ot_scene_text_selection_optionsstruct ot_session_capabilitiesstruct ot_session_control_optionsstruct ot_session_cursor_updatestruct ot_session_kitty_image_transportstruct ot_session_optionsstruct ot_session_pump_resultstruct ot_session_renderer_env_optionsstruct ot_session_renderer_optionsstruct ot_session_renderer_statestruct ot_session_terminal_optionsstruct ot_split_controlstruct ot_split_snapshotstruct ot_styled_text_chunkstruct ot_text_buffer_infostruct ot_text_buffer_replacementstruct ot_text_buffer_replacement_infostruct ot_unicode_chartype ot_context = struct ot_contexttype ot_edit_event_callback = void (*)(uint64_t context_id, uint32_t slot, uint32_t generation, uint32_t event)type ot_output_write_callback = int64_t (*)(void *user_data, const uint8_t *bytes, uint32_t byte_count)type ot_scene_measure_callback = void (*)(uint64_t context_id, uint32_t slot, uint32_t generation, float width, uint32_t width_mode, float height, uint32_t height_mode, float *out_size)type ot_status = int32_t