Taskwarrior replacaement
Find a file
Anish Lakhwara 791cd547ae feat: new command parser
It's not fully hooked up to the react app, and it's not quite complete
either, but it's a start.
Currently, it will parse filter implicitly, and there's also the done
and add command. For now, all commands must place the command name in
the right location.

Additionally, I've hooked up the react table's selection state to the
command parser. Filter based on _ids_ explicitly does work. Manually
selecting an ID will also place it in the input field for
discoverability. It does not remove ids that were manually deselected
yet, nor does filter based on any other attribute work.

The command parser also parses times, but it does so very poorly
currently. More work will need to go into that, for now it's basically a
stub. I'll also need to convert the parser to Go.

The react table conviently handles virtual tables based on it's internal
`row.id`. I'm still wondering how to implement virtual ids, but at least
on the web app, they are constantly updated since the view is always
visible, which is different to the CLI (though perhaps the same as a
                                               TUI?)

Notably, there's no semantics for the difference between selection and
filtering. I think perhaps the implicit filter command should default to
selection, but the explicit filter command should be handled
differently, and actually execute filtering. I haven't yet looked into
how the TanStack Table handles filtering, but I am aware that it does.

I think for an MVP, once done is implemented, I can deploy this, the web
socket server, and try and start using it.
2024-11-10 02:15:10 -08:00
cli init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
db move migrations 2024-09-18 18:47:29 -07:00
js web: use parser in web 2024-10-21 21:14:51 -07:00
mast-react-vite feat: new command parser 2024-11-10 02:15:10 -08:00
parser feat: new command parser 2024-11-10 02:15:10 -08:00
server misc (#4) 2024-08-31 18:12:03 -07:00
.gitignore misc (#4) 2024-08-31 18:12:03 -07:00
architecture.png update archi 2024-08-31 23:04:05 -07:00
flake.lock darwin shell 2024-09-18 18:43:08 -07:00
flake.nix darwin shell 2024-09-18 18:43:08 -07:00
go.mod init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
go.sum init: working task add parser for go (#5) 2024-08-31 23:00:05 -07:00
package-lock.json add peggy as js dependency 2024-09-18 18:48:47 -07:00
package.json add peggy as js dependency 2024-09-18 18:48:47 -07:00
README.md add image 2024-08-31 23:02:28 -07:00

Mast

This project is born out of frustration with Taskwarrior's upgrade to version 3.0.0

I'm looking to build my own task management software, after nearly a decade of using taskwarrior. It tries very hard to emulate the good of taskwarrior, while also being more modern. Opinionated defaults, meets malleable software. I loved Taskwarrior, it grew with me so much, but I believe I can do better.

Goal Map

I want a syncing cross platform, fast and effective tasks program. A web client for phone usage, and a CLI client at a computer. They sync through cr-sqlite, using a fairly simple websocket server (at this stage)

I plan to keep the filter and add commands from Taskwarrior. Probably lots of the properties too. I'm using PEGs for parsing these grammars. I'd like real calendar integration (iCS) for due:

I'm not yet sure what I'd like to do for priority. I like the configurability of taskwarrior, but it's very heavy handed. Some kind of slider would be nice

I also need to find out a solution to virtual tags, and especially ID

I need it to keep integration with Kitaab. That largely means a _json interface, which is fine. Some compatibility layer with Taskwarrior for taskwarrior-tui would be cool too, but isn't yet on the goal list.

Status

A vaguely unordered list of the next tasks to be accomplished, and those recently completed

Next:

  • Parsing task add grammar (For JS)
  • Make SQL files common, instead of embedded in each
  • Parsing task filter grammar
  • Defining all attributes
  • Defining virtual attributes

Completed:

  • Syncing between JS & Go clients
  • Parsing task add grammar (For Go)

Architecture

architecture diagram