<feed xmlns='http://www.w3.org/2005/Atom'>
<title>term.git, 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-16T10:58:58+00:00</updated>
<entry>
<title>Read LTO archives with the compiler's own llvm-nm</title>
<updated>2026-10-16T10:58:58+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-16T10:58:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=18821d5dee4013cfaa72ca586becf020beba862d'/>
<id>urn:sha1:18821d5dee4013cfaa72ca586becf020beba862d</id>
<content type='text'>
The symbols test ran the system nm on the static library. Under LTO the
archive holds bitcode. Xcode's nm cannot read bitcode from a newer
Homebrew LLVM, so the test failed on macOS. With clang, the test now
asks the compiler for its llvm-nm and falls back to nm.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Rewrap header comments that the rename pushed past 80 columns</title>
<updated>2026-10-15T10:05:59+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:05:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=8d6bc64e793dd38bdd1ecbe79441087908f29f8c'/>
<id>urn:sha1:8d6bc64e793dd38bdd1ecbe79441087908f29f8c</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'wt/rename' into api-hardening</title>
<updated>2026-10-15T10:04:32+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:04:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=bdaedce69b17b654bd0060579dd9b9ff120009b5'/>
<id>urn:sha1:bdaedce69b17b654bd0060579dd9b9ff120009b5</id>
<content type='text'>
# Conflicts:
#	README.md
</content>
</entry>
<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>Use the top-level threads dependency in the tests</title>
<updated>2026-10-15T10:03:44+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:03:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=ba75c8b0a1bba03ad92c53375432f122ddb4cb98'/>
<id>urn:sha1:ba75c8b0a1bba03ad92c53375432f122ddb4cb98</id>
<content type='text'>
The library now declares dependency('threads') at the top level and
term_dep carries it, so the tests no longer declare their own. The
README says a Meson host gets threads through the dependency, and
names dependency('threads') for the amalgamation.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Convert each changed snapshot row once</title>
<updated>2026-10-15T09:53:42+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:53:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=bd8222e615134c3ec5e7a07b6b1fa97c9bd4a471'/>
<id>urn:sha1:bd8222e615134c3ec5e7a07b6b1fa97c9bd4a471</id>
<content type='text'>
The atomic update counted arena words by converting every changed row in
phase 1, then converted it again in apply(). A history row is decoded on
each conversion, so paging through history took 74% longer, and a full
redraw 20% longer.

A changed row is now converted once. Small updates reserve the arena for
the most their rows can add, then convert in apply() straight into the
cells, as before. Larger updates and rebuilds convert into a stage in
phase 1, with cluster records after the live ones or in a spare arena,
and apply() copies the smaller of the kept and staged parts, swapping
the stage in when that saves the copy. A failed update still changes
nothing a reader sees.

A row that scrolls in from below no longer counts as kept when its new
key is 0.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Report selection allocation failure instead of truncating</title>
<updated>2026-10-15T09:42:11+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=6d2dc774947787dcef73a3251d1e9ec51bc526df'/>
<id>urn:sha1:6d2dc774947787dcef73a3251d1e9ec51bc526df</id>
<content type='text'>
On a screen taller than 256 rows the selection's row list is allocated.
When that failed, it fell back to the 256-entry stack array, so the
selection and the snapshot's selection spans silently stopped at row
256 while every call still reported success.

lines_init() now reports the failure. term_select_start() and
term_select_extend() return false and leave the selection unchanged,
term_snapshot_update() fails and keeps its previous content, and the
text getters return NULL, as they do for their other allocations.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Reject a scrollback above TERM_SCROLLBACK_MAX</title>
<updated>2026-10-15T09:40:44+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:40:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=7b31d6a05357953c035e2ab05ec117ef748f7798'/>
<id>urn:sha1:7b31d6a05357953c035e2ab05ec117ef748f7798</id>
<content type='text'>
term_new() silently cut a scrollback above 1000000 lines to 1000000.
The limit now has a name in term.h, and term_new() returns NULL above
it, as it does for the other invalid options.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'wt/snapshot-atomic' into api-hardening</title>
<updated>2026-10-15T09:39:21+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:39:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=ca69844a243a6e335b0ddafad057f35e89e0a576'/>
<id>urn:sha1:ca69844a243a6e335b0ddafad057f35e89e0a576</id>
<content type='text'>
# Conflicts:
#	src/snapshot.c
</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>
</feed>
