| Age | Commit message (Collapse) | Author |
|
# Conflicts:
# src/screen.c
|
|
term_feed() returns bool and rejects a NULL terminal, a NULL buffer with
a nonzero length, and any flag bit it does not know. Unknown bits are
rejected now so that later flags can be added without changing what the
old calls mean.
term_new() returns NULL for a negative size component, columns above
TERM_MAX_COLS, a negative scrollback, or a cursor style outside the enum.
Zero still selects the default size and scrollback. It no longer clamps
bad values silently.
term_resize() rejects columns above TERM_MAX_COLS instead of clamping
them, which matches how it already rejects a size below 1.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
|
The shared library now carries its major version in the SONAME
(libterm.so.0), so an ABI break gets a new file name. The header
gains TERM_VERSION, TERM_VERSION_MAJOR/MINOR/PATCH and
TERM_VERSION_CODE, and term_version() returns the code the library was
built with. A test checks the macros against meson.build's project
version and against the runtime value.
term_options ends with uint32_t reserved[8]. term_new() returns NULL if
a word is nonzero, so later versions can give those words a meaning
without misreading a caller's leftover data. All-zero options stay
valid.
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
|
Account for cluster records discarded by snapshot scrolling, propagate snapshot allocation failures with an empty retryable view, and allocate resized screens before mutating visible state. Add bounded-memory and allocation-failure regressions, and update the saved diagnostic and audit report.
|
|
|
|
|
|
Both failures were stale expectations in our copy of the suite.
8c2464c moved the terminal to xterm behavior and added spec tests for
it. The Kitty bridge did not compile then, so nobody updated the suite.
- A cursor report with a pending wrap gives the last column (1;5).
Kitty gives the start of the next line.
- HT only moves the cursor. Kitty writes a tab cell, which erases the
text under the tab. REP after the tab then repeats nothing.
The suite went weeks without running, because it needed
-Dkitty_tests=true. Now every unsanitized Linux build runs it in the
unit suite, and the main option only makes it mandatory. The README
lists the deliberate differences from Kitty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
The core now builds, tests, and benchmarks alone, as a Meson subproject
with no dependency on the main tree.
- include/term/ holds term.h and the header-only unicode/. src/ holds
the core and its private headers. The main tree gets only
include/term through term_dep, so it cannot reach a private header.
- The term tests, the term benchmarks, the Kitty parser suite, and
tools/amalgamate.py and tools/generate_unicode.py move with it. The
tests run as term:<name>.
- The main build passes its -march (arch_flag) and b_ndebug to the
subproject. A directory configured before this commit needs
meson configure -Dterm:arch_flag=-march=... once.
- The term tests compile with -UNDEBUG. They do work inside assert.
- The subproject exports term_test_dep with term_api.h, for the main
tree's render, thumbnail, color, and selection tests.
- The Kitty bridge used struct vector2i and has not compiled since the
public API redesign. It builds again. 2 of its 14 tests fail: REP
after a tab, and a cursor report after a resize.
- dirgraph.py drops the term and unicode layers. Its self-test uses pty.
- The symbols test ignores the __odr_asan symbols that ASan adds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|