<feed xmlns='http://www.w3.org/2005/Atom'>
<title>term.git/src/text.c, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://git.wsap.dev/term.git/atom?h=main</id>
<link rel='self' href='https://git.wsap.dev/term.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/'/>
<updated>2026-10-15T10:04:01+00:00</updated>
<entry>
<title>Rename the library to wsap_vtcore</title>
<updated>2026-10-15T10:04:01+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:04:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=dcebf9c7f954a55350b68d0ead1935612c4e2e05'/>
<id>urn:sha1:dcebf9c7f954a55350b68d0ead1935612c4e2e05</id>
<content type='text'>
ncurses installs &lt;term.h&gt; and defines struct term. In a file that
includes both headers, an ncurses TERMINAL * and this library's terminal
are silently the same type. The name wsap_vtcore avoids the clash.

The public header is now &lt;wsap_vtcore/wsap_vtcore.h&gt;. Every global
symbol uses the wsap_vtcore_ prefix, every macro uses WSAP_VTCORE_, and
the shared library is libwsap_vtcore.so.0. The default terminal name is
now "wsap_vtcore". The ISA override variable is WSAP_VTCORE_ISA.

No other behavior changes. The amalgamation writes wsap_vtcore.c and
wsap_vtcore.h.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'wt/namespace' into api-hardening</title>
<updated>2026-10-15T09:38:58+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:38:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=22345caf457e8d9a4bdb56b696cc5f3694812276'/>
<id>urn:sha1:22345caf457e8d9a4bdb56b696cc5f3694812276</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Keep installed headers from shadowing or polluting host names</title>
<updated>2026-10-15T09:31:21+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:31:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=212f1cc9109aa0deb9e5d990bb2dba2b167618fb'/>
<id>urn:sha1:212f1cc9109aa0deb9e5d990bb2dba2b167618fb</id>
<content type='text'>
The pkg-config file put include/term on the host's include path, so
ncurses' term.h could be picked up in place of ours. Hosts now write
&lt;term/term.h&gt; and the package adds only its include directory.

The installed Unicode API had unprefixed names that collide with host
symbols and macros. Rename them: term_ for functions, types, and static
tables, TERM_ for macros and include guards. unicode_data.inc and
tools/generate_unicode.py are renamed to match. The generator's inputs
here are Unicode 15.1 and the checked-in table is 18.0.0, so the table
data was not regenerated. Only the declarations were checked against
the generator.

utf8.h casts the malloc result so it compiles as C++.

header_test.sh now includes &lt;term/term.h&gt; with only include/ on the path.
It also checks that a host which defines unicode_width, UTF8_ACCEPT,
GRAPHEME_MAX_LEN, in_ranges, and similar names compiles with the Unicode
headers as C11 and C++, in both declaration orders.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Reject invalid arguments instead of ignoring them</title>
<updated>2026-10-15T09:29:35+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:29:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=e47f9f20d68eda78a6621917a7e100ae333a1a53'/>
<id>urn:sha1:e47f9f20d68eda78a6621917a7e100ae333a1a53</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Remove unused private functions and inline trivial helpers</title>
<updated>2026-10-14T14:17:43+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-14T14:17:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=513bf031a589d9e2a1a2730adf56f95e5e316a06'/>
<id>urn:sha1:513bf031a589d9e2a1a2730adf56f95e5e316a06</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fast-path isolated single ASCII cell printing in term_feed_inner</title>
<updated>2026-10-14T11:42:25+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-14T11:42:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=234dd752dc2e15afab38cbbf78f8aa32be72ea5f'/>
<id>urn:sha1:234dd752dc2e15afab38cbbf78f8aa32be72ea5f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Optimize term_feed scalar dispatch, branchless range search, and invalid subparts</title>
<updated>2026-10-14T11:36:22+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-14T11:36:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=4be63ed8cd2eb1c4861f0ab287f24ea695fd671e'/>
<id>urn:sha1:4be63ed8cd2eb1c4861f0ab287f24ea695fd671e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Optimize term_feed ASCII scanning alignment and fast CSI SGR single-param loop</title>
<updated>2026-10-13T16:47:42+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T16:47:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=1846b07e80ceb64b0732538a56bf8463efde3c8d'/>
<id>urn:sha1:1846b07e80ceb64b0732538a56bf8463efde3c8d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Optimize hot loops with direct access, LUTs, and closed-form formulas</title>
<updated>2026-10-13T16:22:05+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T16:22:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=01e1c61e9fcf4a0b0164a7fe5395a209a50f6905'/>
<id>urn:sha1:01e1c61e9fcf4a0b0164a7fe5395a209a50f6905</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Eliminate pen style and history stream parameter smuggling</title>
<updated>2026-10-13T11:46:44+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T11:46:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=1e69599900a753e2d7275d7ba714202b7d9c843e'/>
<id>urn:sha1:1e69599900a753e2d7275d7ba714202b7d9c843e</id>
<content type='text'>
- Introduce struct text_pen bundling (fg, bg, sl) across screen and core
- Reduce text_append from 9 to 7 parameters
- Reduce text_commit from 8 to 6 parameters
- Reduce hist_runs_add_pen from 5 to 3 parameters
- Reduce sc_text_ascii and sc_ascii_fast from 6 to 4 parameters
- Remove unused fg, bg parameters from mark_row_blank
- Introduce struct hist_stream_state in src/hist.c, reducing stream_lines from 9 to 5 params and lf_rows from 10 to 6 params
- Introduce struct hist_view_pos in src/hist_view.h, reducing term_hist_view_row_pos from 9 to 7 params
</content>
</entry>
</feed>
