Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancements for default behavior, customization and features #2

Open
cardoso-thiago opened this issue Nov 27, 2024 · 4 comments
Open

Comments

@cardoso-thiago
Copy link

I've been using Dooit on my personal computer (Linux) and at work (Mac), and I’m really loving it. I thought I’d share a few things that could really help people who are just getting started:

  • I think the behaviors you’ve shown in the images should be the default. Users could then disable anything they don’t need, like the strike on tasks when they’re marked as done. A simple solution, if you like this idea, could be to include a pre-filled config.py file that replicates the behavior shown in the images. This would make it much more intuitive for users to tweak or remove specific features.
  • The documentation could use more practical examples, like how to achieve specific customizations, what can be edited in the key bindings, and what’s available in the extras. I managed to set up almost everything I wanted, basically trying to replicate what’s in the images, but I had to dig into the source code a lot to figure things out.
  • I was initially confused about how to change the theme, so I ended up creating my own by looking through the source code. While trying to get the "paste" feature to work, I accidentally discovered that Ctrl + P switches the theme. I may have missed it, but I don't think this shortcut is mentioned anywhere.

And here are a few feature suggestions that I think would really improve day-to-day use:

  • Paste from clipboard: I work a lot with repository links that I need to check later. It’d be amazing to just copy from the browser and paste it into a task. This might be a bug. I noticed there is some handling with pyperclip in the source code, but I couldn’t get it to work on any of my machines. It doesn’t throw any errors either. I also noticed that Ctrl + 1 to clear the input doesn’t work for me. I did a quick test by capturing Ctrl + V and using pyperclip to paste, and it worked. I am unable to test Command + V at the moment. In the _input.py class:
if key == "ctrl+v" or key == "command+v":
    self._insert_text(pyperclip.paste())
  • Change hierarchy: Sometimes I accidentally create tasks as a “child” instead of a “sibling” and only notice later. I couldn’t find a way to change the hierarchy, but being able to promote or demote tasks would be really useful.
  • Don’t create empty tasks on ESC: I think pressing ESC without typing anything shouldn’t create an empty task. For workspaces, I see some potential use cases, but I can’t think of a reason to have completely blank tasks.
  • Add notes to tasks: For longer tasks, I often come across new info while working (like someone’s email, a repository link, or documentation). It’d be awesome to add these as notes to a task without cluttering up the description itself. Maybe a little note icon could show up next to the task description if it has a note attached.
  • Auto-expand: It’d be great to have a setting to automatically expand all workspaces and todos.

Congrats on the amazing work! I was using Taskwarrior before, but honestly, I find Dooit way more intuitive and enjoyable to use.

@kraanzu
Copy link
Member

kraanzu commented Nov 27, 2024

I think the behaviors you’ve shown in the images should be the default. Users could then disable anything they don’t need, like the strike on tasks when they’re marked as done. A simple solution, if you like this idea, could be to include a pre-filled config.py file that replicates the behavior shown in the images. This would make it much more intuitive for users to tweak or remove specific features.

Yes I was thinking just the same thing

The documentation could use more practical examples, like how to achieve specific customizations, what can be edited in the key bindings, and what’s available in the extras. I managed to set up almost everything I wanted, basically trying to replicate what’s in the images, but I had to dig into the source code a lot to figure things out.

Hmm..so maybe I should add more images you think? Like for some formatting options, I just added a descriptions

but I had to dig into the source code a lot to figure things out.

I'm so sorry man. I think I need to divide the docs into 2 parts, one would be more non-dev friendly and other would be a deep dive or something

I was initially confused about how to change the theme, so I ended up creating my own by looking through the source code. While trying to get the "paste" feature to work, I accidentally discovered that Ctrl + P switches the theme. I may have missed it, but I don't think this shortcut is mentioned anywhere.

Ok this Ctrl+p thing is something that was added recently to the TUI library dooit is using, and you do not change the theme with tat, you'll have to use the config but i've been thinking about making it easier with some kind of overlay

Paste from clipboard: I work a lot with repository links that I need to check later. It’d be amazing to just copy from the browser and paste it into a task. This might be a bug. I noticed there is some handling with pyperclip in the source code, but I couldn’t get it to work on any of my machines. It doesn’t throw any errors either. I also noticed that Ctrl + 1 to clear the input doesn’t work for me. I did a quick test by capturing Ctrl + V and using pyperclip to paste, and it worked. I am unable to test Command + V at the moment. In the _input.py class:

Hmm..might have to do something with MacOS? Idk i'll dig into it but what terminal are you using?

Change hierarchy: Sometimes I accidentally create tasks as a “child” instead of a “sibling” and only notice later. I couldn’t find a way to change the hierarchy, but being able to promote or demote tasks would be really useful.

I'm actually in the process to cut/copy & paste some item so if you accidently made a child you would just be able to cut and paste it again as sibling or vice versa

Don’t create empty tasks on ESC: I think pressing ESC without typing anything shouldn’t create an empty task. For workspaces, I see some potential use cases, but I can’t think of a reason to have completely blank tasks.

Hmm..true. I can just delete them I guess and show a notification to the user

Add notes to tasks: For longer tasks, I often come across new info while working (like someone’s email, a repository link, or documentation). It’d be awesome to add these as notes to a task without cluttering up the description itself. Maybe a little note icon could show up next to the task description if it has a note attached.

Yes this was also recommented by some other user as well. I'm not so sure as to how i should implement this right now though. What do you think?

Auto-expand: It’d be great to have a setting to automatically expand all workspaces and todos.

This should be easy. I'll add it

Congrats on the amazing work! I was using Taskwarrior before, but honestly, I find Dooit way more intuitive and enjoyable to use.

Good news for ya. I'm working on a taskwarrior integration so you'll be able to sync stuff between them :)

@cardoso-thiago
Copy link
Author

Hey! Thank you for the quick response and for addressing everything so thoroughly.

Hmm..so maybe I should add more images you think? Like for some formatting options, I just added a descriptions
I'm so sorry man. I think I need to divide the docs into 2 parts, one would be more non-dev friendly and other would be a deep dive or something

I don't think it's necessary to split the docs into two parts. Instead, it might be more effective to interlink related sections directly. For instance:

  • In the "key bindings" section, it wasn't immediately clear that the methods referenced were the ones listed in Dooit API
  • Similarly, for themes, while there’s a Gruvbox example, it wasn’t clear which themes are officially available. I ended up creating my own custom color scheme by following the documentation.

Please don’t apologize. I found digging into the source code very interesting and learned a lot in the process. :)

Ok this Ctrl+p thing is something that was added recently to the TUI library dooit is using, and you do not change the theme with tat, you'll have to use the config but i've been thinking about making it easier with some kind of overlay

That makes sense! I misunderstood the functionality at first and thought the theme wasn’t changing because I had already defined my custom color scheme in the config.

Hmm..might have to do something with MacOS? Idk i'll dig into it but what terminal are you using?

The same issue happens on Linux. With the tweak I sent earlier, it worked as expected. I’ll test it on macOS later at work to confirm. For reference, I’m using the Hyper terminal on both machines, but I also tested with XFCE’s default terminal and faced the same issue.

I'm actually in the process to cut/copy & paste some item so if you accidently made a child you would just be able to cut and paste it again as sibling or vice versa

That’s an excellent solution, and it would indeed make fixing accidental hierarchies much easier. Thanks!

Yes this was also recommented by some other user as well. I'm not so sure as to how i should implement this right now though. What do you think?

Taskwarrior uses the annotation field. Since you’re planning to implement syncing between Taskwarrior and Dooit, it might be worth considering handling notes in Dooit as well.

  • Perhaps a new table where each todo could have multiple notes.
  • Adding shortcuts like n to create a new note and N to view all the notes
  • For viewing, maybe a pop-up dialog or a dedicated notes panel (similar to the help panel).

Good news for ya. I'm working on a taskwarrior integration so you'll be able to sync stuff between them :)

That’s great news! I’ve already fully committed to Dooit, though. :)

I manually migrated all my tasks from Taskwarrior and even created a small script to display my pending tasks every time I open a terminal

Thanks again for the quick responses and for the great work on Dooit. It’s been a pleasure using it, and I look forward to seeing how it evolves!

@kraanzu
Copy link
Member

kraanzu commented Nov 27, 2024

In the "key bindings" section, it wasn't immediately clear that the methods referenced were the ones listed in Dooit API

True, will keep this in mind. I already have ideas to reduce dependencies so I'll include this as well :)

Similarly, for themes, while there’s a Gruvbox example, it wasn’t clear which themes are officially available. I ended up creating my own custom color scheme by following the documentation.

Yes I'll open a new repo for a collection of community themes.

Please don’t apologize. I found digging into the source code very interesting and learned a lot in the process. :)

Haha. I personally got burned out and lazily left out some parts to refactor later :)

The same issue happens on Linux. With the tweak I sent earlier, it worked as expected. I’ll test it on macOS later at work to confirm. For reference, I’m using the Hyper terminal on both machines, but I also tested with XFCE’s default terminal and faced the same issue.

Of the fix you mentioned doesnt seem to cause any overheads or interefere with other stuff so I'll add it

Perhaps a new table where each todo could have multiple notes.

I was thinking about more of an overlay screen which will be editable, or maybe just the $EDITOR of the user like vim. I'll see

Adding shortcuts like n to create a new note and N to view all the notes

Yep Yep. These can be defined by the users so no biggie

That’s great news! I’ve already fully committed to Dooit, though. :)

Well that brings a smile to my face. Thanks <3

Thanks again for the quick responses and for the great work on Dooit. It’s been a pleasure using it, and I look forward to seeing how it evolves!

It might be a bit slow given I have my personal learning + job and other stuff, but I think the implementation is good and it should be smooth sailing adding any other stuff

THANK YOU!

@cardoso-thiago
Copy link
Author

Haha. I personally got burned out and lazily left out some parts to refactor later :)

Who hasn’t? Haha... But seriously, the code is excellent, very intuitive!

Of the fix you mentioned doesnt seem to cause any overheads or interefere with other stuff so I'll add it

Awesome, thank you so much! I just got off work and tested the "Command + V" part, but unfortunately, it didn’t work. I checked directly with Textual, and it seems to be a limitation on their side. From what I understood in the docs, it’s intentional to maintain compatibility across OSes. Anyway, I applied the adjustment and managed to use "Ctrl + V" on Mac just fine.

I was thinking about more of an overlay screen which will be editable, or maybe just the $EDITOR of the user like vim. I'll see

I like the idea! I think it simplifies the issue of editing old notes, which could have been tricky with the initial plan. Opening the editor gives the freedom to add any kind of information in any format. I just think it’d be nice to allow overriding the default editor for Dooit. By default, use $EDITOR, but make it possible to set another one. For example, I use vim for git commits, but for notes, VS Code would be much more practical.

It might be a bit slow given I have my personal learning + job and other stuff, but I think the implementation is good and it should be smooth sailing adding any other stuff

Take all the time you need. Any addition from what we discussed here will just be a bonus to what’s already incredible. Congrats again for the amazing work!

Have a great week!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants