The Google Calendar Plugin might be one of most important plugins to start with as a lot of potential users use Google Calendar and would prefer not having to go back and forth between tools, in this case Flow and their calendar.
The MVP was started and does the following so far:
Exposes GraphQL Plugin Operation API to connect account, list connected/unconnected calendars.
Some UI in the Plugin settings to use the Plugin's Operation API mentioned above.
When connecting a calendar it will create a webhook channel for that calendar so Flow can receive updates about that calendar and will get and create items and tasks from the first 100 events in the user's calendar from the time the calendar was connected.
A task is created or updated whenever an event is not canceled and not tentative.
What is still left for the MVP?
Improve the UI in the plugin's settings to connect accounts and calendars (it's ugly right now)
Currently the InboxList is blank when first rendering it as its subscription has not resolved the first payload yet.
Solution
The inbox list shouldn't appear blank on first render but should show the header "Inbox", subheader text that is normally shown, the "Add item" button, and skeleton components to show that the list is loading.
Tasks within a day are currently ordered by the Day.tasksOrder column in the DB, which is an array of the task IDs in the ordered to show the tasks in.
Problem
It is currently non-trivial to order subtasks of a task relative to all other tasks and transferring a task back and forth to become a subtask, as it would either require tasks to also have a subtasksOrder column or use some kind of index-based ordering.
Solution
TBD. Read the conversation in this issue to know the chosen solution.
The web.onCreateTask API currently allows plugins to show a Dialog to prompt the user to input more data about the task.
For example, the GitStart plugin, asks the user to input the task title (defaults to the same title as the item they are creating the task from), the GitStart initial task status, and the GitStart task type.
If there are multiple plugins that need to prompt the user for additional data, the dialogs are shown one after the other.
This can be tedious for users and it would more concise to ask everything in one form.
For a lot of plugins, they are asking additional metadata for the task, and would simply require adding an input like a dropdown to an existing form.
This is the example in the "Flow 1.0" project description for what is not stable about the Plugin API, hence why it is part of the "Flow 1.0" project.
Solution
Allow plugins to return DialogInput components so they can be rendered as part of Flow's native Create task dialog.
Still allow plugins to return DialogContent components so they can still prompt the user for additional content within their own dialog.
The IndexView/kanban view currently scrolls to today when first loading the view.
In Flow, a new day starts at 4am instead of midnight, as I expect some late-night users like myself to consider time past midnight part of the same day.
Tasks only start rolling over at 4am.
Solution
In the kanban view (i.e. IndexView component), remain on the same day until 4am the next day.
While testing the Google Calendar plugin in #28, I noticed the task title was not automatically updated after changing an event in my Google Calendar. I had to refresh the page to see the changes.
It may be the same for items (I didn't check).
When a new task is added to a day by a plugin, the user has to refresh the page to see that new task as there are currently no subscriptions/mechanism to update the Day component when there are new tasks in the day.
Part of the Flow 1.0 project as it includes a major decision that would break for users if brought in after a 1.0 release.
If the user presses alt (or option) as they are dragging an item to create a task from it, when the task is created, the item is not dismissed from the inbox and will allow the user to create another task from the same item.
May need to revisit the "creation of tasks from items" entirely.
The double check mark button on items and tasks is confusing and would be nice to remove it in favor of a stronger item to task UX. For example, dragging an item to a day without pressing anything, creates the task and dismisses the item, to make it appear like the user just converted the item into a task. If they press alt/option, the item is not dismissed and they are essentially copying the item into a task.
This will require strengthening the Plugin API to know that tasks can become the source of truth for external things like Linear issues, Trello tasks, etc.
Currently, inputting multiple tasks/items into Flow can take a while as the user has to press the "Add task" or "Add item" each time they want to create an item.
A better UX would be to automatically prompt to create the next task/item when the user presses enter to create the current task.
User clicks on "Add __" button
User inputs task/item title
User presses enter to submit -> task/item is added to the list -> user is prompted to create a new task/item again.
(after creating all tasks/items) User clicks outside the new task/item card input -> the new task card prompt disappears.