From 49f473c5230795bdc88ee2c093344ee0a2ac4f2c Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 10:25:04 -0600 Subject: [PATCH 1/6] update 'description' in issue 91b801a9b6b77cca66ae5ab0b7d97cca --- .../description | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 b738f2842db428df1b4aad0192a7f36c/comments/91b801a9b6b77cca66ae5ab0b7d97cca/description diff --git a/b738f2842db428df1b4aad0192a7f36c/comments/91b801a9b6b77cca66ae5ab0b7d97cca/description b/b738f2842db428df1b4aad0192a7f36c/comments/91b801a9b6b77cca66ae5ab0b7d97cca/description new file mode 100644 index 0000000..b3fd943 --- /dev/null +++ b/b738f2842db428df1b4aad0192a7f36c/comments/91b801a9b6b77cca66ae5ab0b7d97cca/description @@ -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". From 83c7578cfcdfb84ef2f0fe2218f8ed6f02e34252 Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 10:26:27 -0600 Subject: [PATCH 2/6] update 'description' in issue 87919ac6e79521732b0ec65fa7f79853 --- .../comments/87919ac6e79521732b0ec65fa7f79853/description | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 7da3bd5b72de0a05936b094db5d24304/comments/87919ac6e79521732b0ec65fa7f79853/description diff --git a/7da3bd5b72de0a05936b094db5d24304/comments/87919ac6e79521732b0ec65fa7f79853/description b/7da3bd5b72de0a05936b094db5d24304/comments/87919ac6e79521732b0ec65fa7f79853/description new file mode 100644 index 0000000..18b29d3 --- /dev/null +++ b/7da3bd5b72de0a05936b094db5d24304/comments/87919ac6e79521732b0ec65fa7f79853/description @@ -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. From cae36d2da5d129884701a5a167e9adf58412617d Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 10:30:38 -0600 Subject: [PATCH 3/6] update 'description' in issue 7d2d236668872cf11f167ac0462f8751 --- 7d2d236668872cf11f167ac0462f8751/description | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 7d2d236668872cf11f167ac0462f8751/description diff --git a/7d2d236668872cf11f167ac0462f8751/description b/7d2d236668872cf11f167ac0462f8751/description new file mode 100644 index 0000000..488a279 --- /dev/null +++ b/7d2d236668872cf11f167ac0462f8751/description @@ -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". From d77abed936f2e2fd2381692b8180552d963f63ad Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 11:02:22 -0600 Subject: [PATCH 4/6] update 'description' in issue db3eca1d2312bae8e62d2a237a184aa9 --- .../description | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 f57708cdac0607194ba61824e857b37c/comments/db3eca1d2312bae8e62d2a237a184aa9/description diff --git a/f57708cdac0607194ba61824e857b37c/comments/db3eca1d2312bae8e62d2a237a184aa9/description b/f57708cdac0607194ba61824e857b37c/comments/db3eca1d2312bae8e62d2a237a184aa9/description new file mode 100644 index 0000000..55f1a94 --- /dev/null +++ b/f57708cdac0607194ba61824e857b37c/comments/db3eca1d2312bae8e62d2a237a184aa9/description @@ -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 From 392bcda86e8e17b634727257b0fbe8ae3c02786c Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 11:03:14 -0600 Subject: [PATCH 5/6] update 'state' in issue 9e69a30ad6965d7488514584c97ac63c --- 9e69a30ad6965d7488514584c97ac63c/state | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9e69a30ad6965d7488514584c97ac63c/state b/9e69a30ad6965d7488514584c97ac63c/state index 505c028..348ebd9 100644 --- a/9e69a30ad6965d7488514584c97ac63c/state +++ b/9e69a30ad6965d7488514584c97ac63c/state @@ -1 +1 @@ -inprogress \ No newline at end of file +done \ No newline at end of file From c50de40d746de4e983a46cb0e25944ace0c0a1ca Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Wed, 9 Jul 2025 11:03:45 -0600 Subject: [PATCH 6/6] update 'state' in issue 75cefad80aacbf23fc7b9c24a75aa236 --- 75cefad80aacbf23fc7b9c24a75aa236/state | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/75cefad80aacbf23fc7b9c24a75aa236/state b/75cefad80aacbf23fc7b9c24a75aa236/state index 505c028..348ebd9 100644 --- a/75cefad80aacbf23fc7b9c24a75aa236/state +++ b/75cefad80aacbf23fc7b9c24a75aa236/state @@ -1 +1 @@ -inprogress \ No newline at end of file +done \ No newline at end of file