Repository navigation
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
,projectcommand only fires at an idle input box. Typed mid-turn, the message reaches the model directly and never hitsUserPromptSubmit.
Full changelog: v1.2.1...v1.2.2