pijul manipulates the following objets:
We need a coherent terminology around them (ie, we should bikeshed revision vs commit; I prefer revision).
We also need a way to address each of these, and make sure commands treat them in a coherent way. Being inconsistent about that between commands is a sure way to get a fun UI.
So, the easy ones:
The '%' and '--' operators should distribute over ':' (ie, it should be possible to do 'repo:branch:@yesterday--~0' for all patches since in that branch since yesterday)
For revisions, ther could probably also be a pseudo-revision for the current unrecorded state of the repository, but it's not clear if it would make sense with all / most commands.
Since patches commute, revisions are going to be confusing for many users, because even if Alice and Bob keep track of all revisions, they will almost certainly have revisions unknown to the other.
How about using tags for revisions? We could imagine an a-posteriori tagging command, which allows the user to communicate a specific revision to their coauthors.
In other words, revisions are just sets of patches, but tags are good to have too.