ToDo List Plugin | A simple and efficient plugin for keeping track of what to do

This plugin is currently free. I plan to up the cost to :robux_gold: 100 once I fully ensure that it is bug free and I have received community feedback.

This plugin will remain free. I am not going to charge USD for this, and I personally find it absurd that it’s even an option.


ToDo List Plugin

A simple and efficient todo list that blends in with the studio theme and feel.

image

This plugin feels right at home in Roblox Studio’s UI, and is easy to understand straight from the beginning. It can be resized, docked and moved around like any other piece of Studio’s built in plugins.


1. Making Tasks

Type into the “Add task” bar to name the task. Hit enter to confirm and add it to a list.

image

image

You can alter the group and priority of a task by clicking the group name and the star icon respectively.
Click the X next to the task to remove it.


2. Making Groups

You can organize tasks by category using the groups feature. Simply create new groups by entering the desired name into the “New Group” field and hitting enter.

image

image

When creating a task, they will be assigned to the group that is currently selected.
You can change the group that is assigned to a task by clicking on the group name.

image


3. Task Priority

You can further organize tasks by assigning them a priority. Clicking the star icon next to a task will toggle whether or not it is considered important.

image
Not Starred

image
Starred

Starred tasks will always show first in the list before any other tasks.
image


4. Task Filtering and Sorting

You can narrow down your selection by using the search and filter options.

image

Using the search feature to find tasks quickly and hide the rest.

image
Using the filter options to show only starred tasks.

Searching is not case sensitive, but spelling and spacing is needed. When you are done entering your search term, press enter to confirm it.

image
Clicking on the filter button will show three options to sort by.


That’s it! Hopefully you’ve found this plugin interesting or useful and may consider purchasing it.

Plugin on the Marketplace: Click Me!


Extra Information
  • Tasks and groups can be manually edited by finding your ToDoList folder in ServerStorage.
    image
    Tasks and groups are stored as attributes on their respective folders. It’s not really recommended that you edit these values, as they might appear difficult to understand and are very easy to break.

  • If you have a lot of groups and tasks (or you break something), and you want it all cleared, simply delete the ToDoList folder and restart studio. (For some reason, even after deleting the folder, the plugin continues to function completely fine which is quite shocking and odd, as a LOT of functions reference this folder repeatedly. I assume it’s something to do with studio and how things are deleted. At the moment, the only consistent way to completely reset everything is to just delete the folder and restart studio.)

13 Likes

Seems like a really cool concept! I can’t try it out right now but from the screenshots it looks really well made, well done!

1 Like

Great plugin! Though it would be even cooler to have the plugin save the list for next time I open studio again :grin: Any plan of adding that?

3 Likes

Yessirrrr Thanks bro I’ll use it a lot

2 Likes

I did implement saving after the studio session closes. If you look in ServerStorage, there should be a folder that stores all of the important info for your tasks and groups.

I’m on mobile currently, so I don’t quite remember exactly what it was called (I think something along the lines of “TodoList”.)

If you do see the folder and it still isn’t working, I’ll check later for bugs revolving around how the folder is made. Thank you for the reply!


Edit: I found the source of the bug. Your tasks were saved, but the UI elements were never loaded or refreshed when you first load up studio and the widget auto opens. This has been fixed.

2 Likes

hey this is cool plugin but there missing here like “TODO:” in scripts so i made one for you.

local scripts = {}
for _, obj in ipairs(game:GetDescendants()) do
	if obj:IsA("Script") or obj:IsA("ModuleScript") then
		if obj.Name:match("TODO") then continue end
		if table.find(scripts, obj) then continue end
		table.insert(scripts, obj)
	end
end
for _, Script in pairs(scripts) do
	if not Script.Parent then continue end
	if Script.Name:match("TODO") then continue end
	local x = Script.Source
	local sources = x:split("\n")
	if #sources == 0 then continue end
	for idx, line: string in ipairs(sources) do
		if line:len() > 0 and line:find("TODO") then
			local temp = {}
			local todos = {}
			local copy_todo = {}
			table.insert(todos, {idx, line})
			for k, v in ipairs(sources) do
				local nextLine, nextLineTxt: string = next(sources, k)
				if not nextLine or not nextLineTxt then continue end
				if typeof(nextLineTxt) ~= "string" or nextLineTxt:len() == 0 then continue end
				table.insert(temp, {nextLine, nextLineTxt})
			end
			for idx, v in pairs(temp) do
				if typeof(v) ~= "table" then continue end
				local cut = v[2]:sub(1, 2)
				local s,e = cut:find("--", 0, true)
				if not s or not e then continue end
				if e <= 1 then continue end
				table.insert(todos, v)
			end
			for idx, todo in pairs(todos) do
				local line = todo[1]
				local text = todo[2]
				local s,e = text:find("TODO", 0, true)
				if s and e and e == 0 then
					local newDir = #copy_todo + 1
					copy_todo[newDir] = {}
					table.remove(todos, idx)
					table.insert(copy_todo[newDir], todo)
				else
					if #copy_todo == 0 then
						copy_todo[1] = {}
					end
					table.insert(copy_todo[#copy_todo], todo)
				end
			end
			for _, packedTodo in pairs(copy_todo) do
				local todo = ""
				for _, obj in pairs(packedTodo) do
					todo ..= string.format("Line %s: %s\n", obj[1], obj[2])
				end
				print(string.format("%s [%s - %s]:\n %s", Script.Name, Script.ClassName, Script.Parent.Name, todo))
			end
		end
	end
end

ex, in Test ModuleScript:

-- TODO: Finish GetPowerBoost function
-- argument: player
-- return: Power
-- Power = BaseGain * BonusGain

function Test:GetPowerBoost(player: Player)
end


image
image

1 Like

I love this!

You should add a checkbox system that’s an improvement to Sleitnick’s plugin, so developers can use stars for individual tasks that they are focusing on and checkboxes for done tasks instead of deleting them right away. As an improvement, checkbox tasks will be at the bottom of the task list, and you can sort by Done and Unfinished.

If not done already, a whole team using the plugin should be able to see each other’s tasks, but the folder should already cover this, I can’t test it right now. You should be able to manage what members of the collaboration can create tasks and categories.

You should also be able to sort groups by dragging them to the left, for example, say I wanted to move planning to the left, scripting would be moved after it and so forth. But you shouldn’t be able to move All Tasks because like, why lol

image

Dunno if this is still being maintained or anything, but this is really useful and it actually matches devforum and looks decent unlike other plugins, and you should continue working on this if you can.

Currently using this with ro-tasks

Bugs I Found
  • GroupID and TaskID go up even if you delete a category/task
1 Like

I like this idea! I’ll put it on the list of things to change. This isn’t something I considered originally, but I will add this feature.

Adding this would also make the starring feature a bit redundant, so I’ll probably rework filtering to sort by done / unfinished instead of starred / unstarred.

This should work fairly well. No guarantees however, as the whole folder thing seems to be a bit buggy at times (i.e. attributes still accessible and folder still able to be located by the plugin even if deleted). (See the blurred text in Extra Information for more on that.)

This should be supported just by how it was set up. But if it isn’t, I highly doubt I can fix it as it’s probably just some weird studio quirk.

As for permissions, it’s not something I’d really want to script at the moment. Maybe some sort of input box to add usernames who can read / write to the folder. But nothing is stopping them from just manually editing the attributes anyways.

Might try to add this, although it could be a challenge. I’ll give it a shot for sure.

This isn’t exactly a bug, and its kind of intended behavior. It’s a weird system I came up with to always ensure that new tasks are sorted to the bottom and new groups are pushed to the right.

I could probably redo this logic by assigning tasks a tick value for when they were made, and assign groups an order number to support dragging around. Would require a pretty large rewrite of the plugin, but it’s doable.


I’d be lying if I said I’ve been maintaining this lately, but thank you for the feedback! I’ll find some time soon to get around to adding some of these updates.

No, add filtering methods to both stars and checks, as people can add stars to personal tasks they are taking, like a modeler is working on a certain model they can star that to remember what they were doing or something.

Eh yeah, don’t worry about that if you want to, not that important anyway.

Can’t you just loop through everything or use #Instance:GetAttributes() or something similar?

I have a terrible habit of overcomplicating simple things and as a result I never thought of doing this :joy:

I’ll see what I can do with the UI. Using studio’s default plugin dropdowns is a bit of a pain since it would be hard to display to the user what filters are active currently. (I can’t place an icon or check next to them in the dropdown).

I’ll probably end up just doing a custom dropdown menu for that and rework filtering altogether.

Starring will remain then :slightly_smiling_face:

1 Like

Same haha, I’m half perfectionist and I have a habit of making almost everything optimal as to how I see it.

Oh, just make stars appear at the top of the list with highest priority if you don’t feel like doing all that, and make done tasks appear at the bottom since you won’t really need to look at those, same effect, unless you want to make a custom filtering system, nothing wrong with a challenge haha.

1 Like

This would be done w/ no filters applied.

By filters, I meant viewing only starred tasks, unstarred etc at once.
image
Unfiltered List

image
Filter: Starred Only


The current filtering UI makes use of the default plugin dropdown menus, which are extremely basic and wouldn’t allow me to add an easy way for users to view combinations at a time. (i.e. starred only + done only at the same time).

image

That’s why I mentioned making my own dropdown to solve this instead of using the default studio one.

I know, that’s fine, it’s probably better if there’s no filter for it but idk, do what you want to do about it haha
maybe loop through all the current filters active and add the icon beside the filter icon inside of the search bar if you wanna do it but you’re lazy

I REAAALLY love this plugin, it makes me not get confused when working on my games lol, nice job :3
Here’s a few things i’d like to suggest tho:
> Pressing the right mouse button on a task should make it’s text look something like this (strikethrough), it would speed up development imo! You could try using this for it
> Option to automatically select the “Add task” button once you press enter to create a new task
> Option to color task’s backgrounds

1 Like