Looks cool, love the customisation dialog as well.
I really think the smart syntax should not use “!” as that’s pretty much universally means inverse/negative of whichever statement comes after. Eventually you’ll get to finally fix the search and hopefully implement inverse statements - so if I want to see what’s due now, but excluding anything with a #pm tag, I would expect to use “^now ! #pm” for the search query.
I suggest using = > < for the smart syntax sign for color, and it should work that way:
= shows me only the items for that exact color (so “=1” instead of “!1”)
< shows me all items below that color
> shows me all items above that color
Examples:
“^now <2” would shows all due items above 2, i.e., 1 (same as ^now =1)
“^now >1” would shows due items with a color above 1, i.e., 2-9
As for the edge cases, I suppose only 1-9 are allowed and if any other digit is used, perhaps an error bubble should be shown? Same with “^now <1” and “^now >9” as they don’t quite make sense.
If this is too hard or too confusing to do the < > thing =, I’d stick to using = for the color sign, but keep ! for the search rewrite.
The first point of smart syntax is to allow editing priorities when editing text of list item. Currently tags and due dates can be edited when you edit list item text, priority cannot be. So we consider to have syntax like some list item ^today #xx-tag !3 when editing list item text. Do you suggest using =3 in this place?
For search/filtering there is already priority:4 syntax (and it can be priority>5 later, if needed).
For NOT term in the search we will probably use this NOT word to make syntax explicit on the first place (so not only programmers understand what’s going on).
I thought it would make make more sense to use =3 instead of !3 so that eventually you can use one of those 3 characters (> < =) for dealing with priorities, that’s more logically consistent than using ! > < instead, i.e., the first lot are all comparing/math operators.