You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Taskwarrior appears to have trouble displaying Nerd Font glyphs whose Unicode code points are above U+FFFF (five hexadecimal digits).
For example, Nerd Font glyphs such as U+F0A48 and U+F166C do not display correctly when used in Taskwarrior configuration/report output, but four-digit glyphs such as U+F251 or U+F252 work as expected.
The five-digit glyphs display terminal when printed directly from the shell, so this does not appear to be a terminal or font configuration issue.
Expected behavior
Taskwarrior should preserve and display Unicode characters outside the Basic Multilingual Plane (code points above U+FFFF) in the same way that the terminal displays them.
Actual behavior
Nerd Font glyphs with five-digits do not render correctly in Taskwarrior output, while four-digit Nerd Font glyphs do.
Example
These work:
U+F251
U+F252
These do not:
U+F0A48
U+F166C
All of these glyphs are available in the installed Nerd Font and can be displayed normally outside Taskwarrior.
Environment
Taskwarrior: 3.5.0
OS: macOS
Terminal: iTerm2
Font: Nerd Font (I use Fera)
Would support for Unicode characters above U+FFFF be feasible?
Taskwarrior uses libshared for Unicode support (and lots of other things). Libshared sort of "rolls its own" Unicode support so I believe there are Unicode developments since it was written that it does not support.
@djmitche I did a search before posting this and that did not come up - it appears that was a different issue as I was getting five little ? glyphs instead of the real glyph but anything in the F### range worked it was the five digit ones that still didn't.
The glyph I will be using as well as the version of task
Exhibit B
The glyph appears correctly on the first go. (I edited out a typing mistake)
Exhibit C
The failure of said glyph after a task is modified. Seems the issue is a little more nuanced because when I initially created the task, the glyph did appear but only after a tag was added and removed did it get weird.
task add ' glyph test'
task +LATEST mod +foo
task +LATEST info
The glyph still failed after the modification.
With hooks disabled:
task rc.hooks=0 ...
the glyph survives correctly.
So this does not appear to be caused by Python json.loads/json.dumps, ensure_ascii, or my hook logic. Simply round-tripping Taskwarrior's own task JSON through an on-modify hook is enough to reproduce it.
If your attempt didn't have one of these hooks, it would not have recreated the issue.
Looks like it was definitely not a core taskwarrior issue!
Used a local skill in codex to scan my setup because I was worried it was in my tw-roll-crunch and found that the problem was in a different script (track) that I use to sync tasktimew and my personal time-tracking/invoicing CLI:
I do appreciate your time invested in this project as a whole and this "issue" specifically!
Activity
djmitche commentedon Sep 8, 2026
Is this the same as GothenburgBitFactory/libshared#116?
Taskwarrior uses libshared for Unicode support (and lots of other things). Libshared sort of "rolls its own" Unicode support so I believe there are Unicode developments since it was written that it does not support.
ylub commentedon Sep 8, 2026
@djmitche I did a search before posting this and that did not come up - it appears that was a different issue as I was getting five little
?glyphs instead of the real glyph but anything in theF###range worked it was the five digit ones that still didn't.djmitche commentedon Sep 8, 2026
Can you post some screenshots of what you're seeing?
ylub commentedon Sep 8, 2026
Exhibit A
The glyph I will be using as well as the version of

taskExhibit B
The glyph appears correctly on the first go. (I edited out a typing mistake)
Exhibit C
The failure of said glyph after a task is modified. Seems the issue is a little more nuanced because when I initially created the task, the glyph did appear but only after a tag was added and removed did it get weird.

djmitche commentedon Sep 8, 2026
Hm, it sounds like it's failing to make a round-trip somewhere. Did you by chance use
task editor was that change at 11:05:23 justtask 91 mod +egg?ylub commentedon Sep 8, 2026
I have been using
modifywhen I update tasks I just turned it on and off basicallydjmitche commentedon Sep 9, 2026
Hm, that seems like I should be able to reproduce it, but it works for me:
any idea what I'm missing?
ylub commentedon Sep 9, 2026
Seems like the problem only occurs when an
on-modifyhook is enabled.I replaced the real hook with a minimal passthrough hook without JSON parsing or manipulation at all:
Then:
task add ' glyph test' task +LATEST mod +foo task +LATEST infoThe glyph still failed after the modification.
With hooks disabled:
the glyph survives correctly.
So this does not appear to be caused by Python
json.loads/json.dumps,ensure_ascii, or my hook logic. Simply round-tripping Taskwarrior's own task JSON through anon-modifyhook is enough to reproduce it.If your attempt didn't have one of these hooks, it would not have recreated the issue.
ylub commentedon Sep 10, 2026
Looks like it was definitely not a core taskwarrior issue!
Used a local skill in codex to scan my setup because I was worried it was in my tw-roll-crunch and found that the problem was in a different script (
track) that I use to synctasktimewand my personal time-tracking/invoicing CLI:I do appreciate your time invested in this project as a whole and this "issue" specifically!
djmitche commentedon Sep 10, 2026
Awesome, I'm glad it got solved. Surrogate pairs are the bane of the encoding-related parts of my existence.