Skip to content

v1.2.2 - locale-safe marker stripping

Latest

Choose a tag to compare

@dotcomjack dotcomjack released this 07 Aug 13:01
· 3 commits to main since this release

Fixes a marker bug that only appears on someone else's machine.

The bug

strip_mark used a ${#pre} -le 8 length guard. ${#var} counts characters under a UTF-8 locale but bytes under C/POSIX, and hooks routinely inherit an unset locale. Any TABTINT_MARK over 8 bytes (every ZWJ emoji, and ●●●) then failed to strip, so the watcher's re-assert prepended a fresh marker on every poll.

Measured: a tab title growing from 32 bytes to 264 over eight polls, unbounded until you focused the tab.

The default ● is 3 bytes and was never affected. This only bit people who set TABTINT_MARK.

The fix

Test the shape of the prefix instead of its length. A marker glyph never contains an ASCII letter, digit or space; a real title fragment essentially always does. That is locale-independent, stays glyph-agnostic, and also fixes the original truncation bug in v1.2.1, which the length guard never did.

Version Behaviour
v1.2.1 truncated any title containing a WORD JOINER followed by a space
v1.2.1 + main unbounded title growth under a C or unset locale
v1.2.2 green across every locale and mark tested

Also

  • test/strip-mark.sh, 10 cases across 3 locales and 2 marks. Fails on both prior implementations.
  • README now documents that the zero-turn ,project command only fires at an idle input box. Typed mid-turn, the message reaches the model directly and never hits UserPromptSubmit.

Full changelog: v1.2.1...v1.2.2