Merge remote-tracking branch 'origin/entomologist-data' into entomologist-data

This commit is contained in:
sigil-03 2025-07-09 12:59:54 -06:00
commit baa7cdd7e9
25 changed files with 141 additions and 3 deletions

View file

@ -0,0 +1 @@
seb

View file

@ -3,4 +3,5 @@ add optional 'assignee' to issue
This is probably just another free-form text string for now, maybe
something fancier in the future.
As part of this, teach `ent list FILTER` to filter by assignee.
NOTE: Teaching `ent list FILTER` to filter by assignee is a separate
issue.

View file

@ -0,0 +1 @@
seb

View file

@ -1 +1 @@
inprogress
done

View file

@ -0,0 +1 @@
seb

View file

@ -0,0 +1 @@
done

View file

@ -0,0 +1,13 @@
add `ent tag ISSUE_ID TAG`
Tags are short text strings without white space.
The Issue directory will gain a file named `tags`, containing the sorted
list of tags.
The `ent list` output will add a bit to the end of each issue displayed,
something like "[tag1, tag2]", or nothing if the issue has no tags
(like how we don't show assignee if there is none).
As part of this issue, the `ent list FILTER` will gain a new filter
chunk type like "tags=v2.31,ux-papercut".

View file

@ -0,0 +1,2 @@
I think this will be easy. We'll teach `ent edit ID` to search not only
issue IDs but also comment IDs, then reuse the existing edit code.

View file

@ -0,0 +1 @@
This is a duplicate of issue e089400e8a9e11fe9bf10d50b2f889d7

View file

@ -0,0 +1 @@
seb

View file

@ -0,0 +1 @@
teach `ent list FILTER` to filter by assignee

View file

@ -0,0 +1 @@
done

View file

@ -0,0 +1 @@
seb

View file

@ -0,0 +1 @@
inprogress

View file

@ -0,0 +1,7 @@
`ent new` and `ent comment`: detect empty issue descriptions & comments
If the user changes their mind and saves an empty file, don't make a
new empty comment.
For an embarrassing example, see comment 9e81dce91164a3ee26c3214ee2d9d809
on issue 75cefad80aacbf23fc7b9c24a75aa236.

View file

@ -0,0 +1,7 @@
`ent sync`, ^C, now there's a stray worktree
The worktree has the `entomologist-data` branch checked out in it,
so ent won't make another.
Probably want a crash handler in `ent` to clean up any worktree we
have open.

View file

@ -0,0 +1 @@
seb

View file

@ -0,0 +1 @@
use git author info to attribute issues and comments to people

View file

@ -0,0 +1 @@
done

View file

@ -0,0 +1,38 @@
# `ent list FILTER` filter format
I'm not sure about the filter format, but here are some notes...
There are (as of df7b5c6aa4a00dfca66dc802f1e813f23f27a5b9) two independent
filters: "state" and "assignee". The "state" filter defaults to
including issues whose state is InProgress, Blocked, Backlog, or New.
The "assignee" filter defaults to including all issues, assigned or not.
The two filters can be independently overridden by the `ent list
FILTER` command. FILTER is a string containing "chunks" separated by
":", like the PATH environment variable. Each chunk is of the form
"name=value[,value...]". "name" can currently be either "state" or
"assignee", and we can add more in the future (e.g "tag" or "ctime").
The "value" arguments to the "state" filter must be one of the valid
states, or it's a parse error.
The "value" arguments to the "assignee" filter are used to
string-compare against the issues "assignee" field, exact matches are
accepted and everything else is rejected. A special assignee filter of
the empty string matches issues that don't have an assignee.
Some examples:
* `ent list` shows issues in the states listed above, and don't filter
based on assignee at all.
* `ent list assignee=seb` shows issues in the states listed above,
but only if the assignee is "seb".
* `ent list assignee=seb,` shows issues in the states listed above,
but only if the assignee is "seb" or if there is no assignee.
* `ent list state=done` shows all issues in the Done state.
* `ent list state=inprogress:assignee=seb` shows issues in the InProgress
state that are assigned to "seb".

View file

@ -0,0 +1,20 @@
make issue assignment more flexible
I think there are two things i want that don't currently work:
* add some way to un-assign a person from an issue
* support multiple people assigned to the same issue
Maybe the `assignee` field of the Issue struct should be a Vec<String>
instead of String? And the `assignee` file of the issue directory should
be a list, one assignee per line?
Possible new CLI ui:
* `ent assign ISSUE PERSON[,PERSON...]` replaces the `assignee` list
with the new user-specified list.
* `ent assign ISSUE +PERSON` adds PERSON to the list
* `ent assign ISSUE -PERSON` removes the PERSON from the list
Also support removing the `assignee` file from the issue directory if the
list is empty. Or maybe allow the file to exist but with 0 bytes in it?
Probably either one is fine.

View file

@ -0,0 +1 @@
lex

View file

@ -1 +1 @@
inprogress
done

View file

@ -0,0 +1,36 @@
One possible way to determine how much of the UUID we need to keep
for uniqueness:
* Read the issue database into memory
* Build a tree of all the issue ids:
* Define a Node type for a tree datastructure as:
enum Node {
Empty,
IssueId(String),
SubNodes([&Node; 256]),
}
* Create an empty root node = Node::Empty
* For each issue:
issue_id_bytes = issue_id.iter()
issue_id_byte = issue_id_bytes.next()
current_node = root
while current_node == SubNodes:
current_node = current_node[issue_id_byte]
issue_id_byte = issue_id_bytes.next()
if current_node == Empty:
current_node = Node::IssueId(issue_id)
else: # we know current_node == IssueId(original_issue_id)
replace current_node with a SubNodes initialized to [Node::Empty; 256]
current_node[original_issue_id[depth]] = Node::IssueId(original_issue_id)
recurse trying again to insert issue_id
* Walk the entire tree, keeping track of the depth of each IssueId node (ie the number of SubNodes nodes above it)
* The largest depth is the number of bytes of the issue ids neede to ensure uniqueness