Plain text issue tracking

For a while i have had the urge to do issue tracking on my own projects as simple as possible. Just plain text files that i can easily replicate between my devices and that makes it possible for me to work in offline first mode.

I keep these handwritten issues in a git repository for synchronizing between my different devices just as i do with code.

Plain text issue specification

The .issue file format consists of a title = my first issue followed by a list of properties

id: 1
type: story
created: 2022-12-23 08:00:00 CET

The properties are user defined, meaning that you can add any property you want.

After the property section is the body section which is essentially the rest of the issue text.

An example of a full issue of mine is:

= Implement create issue command
:id 1
:created 2022-12-14 06:25:00 GMT+1
:updated 2022-12-15 06:59:10 GMT+1
:type story
:status closed
:resolved IMPLEMENTED
:assigned jzs
:kanban complete

Implement a command that creates an issue. The command must use the config in 
the project root for determining standard values, which fields to ask for, etc.
When the command has finished asking for input, it must launch your editor of
choice to allow you to finish the ticket.

This feature of launching an editor for a ticket description must be optional.

Usage of command: `$ tuigile create "My first ticket"`

If the folder (or any subfolders does not contain a .tuigile.conf then the
command must fail asking you to initialize a project first using the 
`$ tuigile init "my first project"` command.

= Comments

jzs: Implemented but order of keys are random. Keep order from config file!
     Also fix naming of file. Make the file naming configurable possibly.
	 These are tracked in tuigile:id=11, tuigile:id=12 and tuigile:id=13

Command line program

In order to give me an easy way of getting an overview, i am currently working on a command line program to visualize these tickets in a more organized way. This cli must not know anything about which properties are available in tickets. That way it becomes as flexible as possible to how people like to organize their own tickets.

Example commands will be:

$ tuigile init initializes a project by creating a .tuigile.conf file in the present working directory. All subsequent commands run will detect tickets located in this directory and all sub directories.

$ tuigile list --filter "status:open" --filter "assigned:jzs" --view id,kanban,title would show all tickets that has status set to open and assigned set to jzs. It will print out the properties id,kanban and title as columns. Title being a special keyword for the title of the ticket and not a property named title.

$ tuigile show id:2 would print out all tickets that has the property id set to 2. Hopefully this is only one issue.

I also want to have the possibility to define default filters, default views and default values when creating new tickets. These defaults should be project specific and a part of the .tuigile.conf configuration file.

I will not promise when i will make the cli available, but what i can say is that i am currently working on it.

If you have ideas, feedback or just want to discuss you can check out the newly created mailing list for this project https://lists.sr.ht/~jzs/tuigile (it is public)


twitter github sourcehut