CLI Todolist
- 6 Devlogs
- 25 Total hours
A simple cli todolist made using gotui.
A simple cli todolist made using gotui.
I’ve spent these 3h mostly on implementing the reminders feature, sadly I couldn’t find a good enough solution and had to drop the feature.
I’ve tested multiple go libraries but just couldn’t find one that reliably sent notifications across all platforms. Also, all of them sent desktop notifications instead of something more terminal-related which is what I had in mind. And then, after fighting with creating a background process for hours I decided that it simply wasn’t worth the effort, so I decided to not implement reminders and delete all reminder-related features already implemented in the UI. The due date feature remains intact.
It’s sad but I think it’s the best decision to keep the app consistent and manageable. Chasing processes in activity monitor to stop notification loops was fun though!
But not all the time in these 3 hours was wasted. I was able to add a button to reset the due date of a TODO and did a general cleanup of the code to prepare it for release.
I can almost see the next ship, I’ve made a lot of progress.
Main improvements:
Some bug fixes + minor improvements:
Things left to do:
After spending quite the time working with the time package I now think that our understanding of time is broken. Years should have a set amount of days, months a set amount of days and weeks. It would make my live much easier.
I implemented a lot of stuff in this 5 hours. Here you have a list:
I already wrote way too much on the last two devlogs and it’s already late so I’ve kept this one brief :)
After almost an hour of coding I was able get persistent storage working again and fix a couple of bugs.
In the last devlog I explained that because of the project’s rewrite I disabled persistent storage. The project now asked for the user’s name and supported multiple todolists so the previous logic didn’t work.
I thankfully was able to reuse a lot of code from the last version(mostly the file handling stuff). Now the project stores data on disk this way:
Both files get stored in the same directory in which the program runs.
Bugs fixed:
I used to be the number one hater of the stardance review process(you get pretty tired of it after having to review the same slack bot 15 times but with different names) but after reading the feedback other people have left on my shipped projects I’ve changed my mind.
Initially I decided to ship this thing quickly so I could get the sticker, but after seeing that a lot of people liked this project(and the Happiness meter too, check it out on my page) I’ve decided to keep improving it with the suggestions reviewers left.
I’ll start with fixing the number one complaint, the devlogs. I still stand by my belief of “ship first, talk later” but I recognize that people enjoy reading this devlogs and they also force me to think twice about what I implemented and the decisions I made.
Enough talk, what did I do in this 5h of coding time? Well, I basically rewrote the whole thing. Now there’s a new starting flow. Much more personalized, it even asks for your name! I tried to keep the todo selection logic mostly intact because it was a pain to write. Sadly I wanted to implement overflow handling and ended up having to rethink and rewrite a lot of code.
Other features I implemented:
Things I want to add that reviewers asked for:
I won’t change the AI declaration because it still applies to the first ship(even though the second is basically a rewrite) but in this one I tried to use even less and go back to good ol stack overflow.
One reviewer asked me to make a mobile app for this, I tried to port it to ios using gomobile but it was a mess and simply not worth the effort so I sent the original go code to an agent and asked it to port it to swift. For a vibedcoded prototype it works pretty well so I’ll explore that option too.
I still have to work on the persistent storage, it’s going to have to be more complex.
Lastly I would like to thank again to all the reviewers that took the time to write thoughtful reviews, it means a lot to me. Some people even went out of the way to test the builds for windows and linux that I couldn’t test, thanks a lot :)