Giter Site home page Giter Site logo

mattermost / mattermost-plugin-todo Goto Github PK

View Code? Open in Web Editor NEW
63.0 33.0 58.0 4.23 MB

Mattermost plugin for tracking to do items

License: Apache License 2.0

Makefile 4.22% Go 36.43% JavaScript 40.73% TypeScript 11.44% SCSS 7.09% Shell 0.09%
todo hacktoberfest mattermost mattermost-plugin

mattermost-plugin-todo's Introduction

Disclaimer

This repository is community supported and not maintained by Mattermost. Mattermost disclaims liability for integrations, including Third Party Integrations and Mattermost Integrations. Integrations may be modified or discontinued at any time.

Mattermost Todo Plugin

Build Status Code Coverage Release HW

A plugin to track Todo issues in a list and send you daily reminders about your Todo list.

Help Wanted

Install

  1. Go the releases page and download the latest release.
  2. On your Mattermost, go to System Console -> Plugin Management and upload it.
  3. Start using it!

Usage

To add an issue to your Todo list, do one one of the following:

  • Open the sidebar from the channel header and click the "Add new issue" button
  • Type /todo add <your Todo message here> into the textbox and send
  • Click the on the dropdown menu from a post and click "Add Todo"

To view your Todo list, do one of the following:

  • Click on the button in the channel header to open the Todo list in the right sidebar.
  • Type /todo list into the textbox and send

To remove an issue from your list:

  • Open the sidebar from the channel header and click the "Done" or "Won't Do" buttons below the issue you want to remove
  • Type /todo pop into the text and send to remove the top issue in the list

To send an issue to another user:

  • Open the sidebar from the channel header and click the "Add new issue" button and select the user you want to send the issue to
  • Type /todo send <username> <your Todo message here> into the textbox and send

Every day you will get a reminder of the issues you need to complete from the Todo bot. The message is only sent if you have issues on your Todo list.

Development

This plugin contains both a server and web app portion. Read our documentation about the Developer Workflow and Developer Setup for more information about developing and extending plugins.

Releasing new versions

The version of a plugin is determined at compile time, automatically populating a version field in the plugin manifest:

  • If the current commit matches a tag, the version will match after stripping any leading v, e.g. 1.3.1.
  • Otherwise, the version will combine the nearest tag with git rev-parse --short HEAD, e.g. 1.3.1+d06e53e1.
  • If there is no version tag, an empty version will be combined with the short hash, e.g. 0.0.0+76081421.

To disable this behaviour, manually populate and maintain the version field.

mattermost-plugin-todo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mattermost-plugin-todo's Issues

Several DMs from ToDo bot are no longer received

I'm seeing at least 3 cases where DMs from To Do bot are not sent to the appropriate users.

  • Receiver cancels an item on their to do list >> Sender should receive a DM that receiver has canceled the task.
  • Receiver marks an item on their to do list as Done >> Sender should receive a DM that receiver has completed the task.
  • Sender cancels an item that was sent >> Receiver should get a DM that the sender canceled the item

Not all DMs are missing. I can still see the DM to sender when the receiver accepts a task they have sent.

"Add to thread" functionality is not affected by this issue. In these cases the To Do Bot will reply to the post when the event occurs.

Use Interactive Messages (Slack Attachments) instead of Custom Post

Right now, when you receive a Todo, you get a custom post from the bot telling you whether you want to accept, decline, or add to your list that todo.

This custom post cannot be rendered in the mobile version, and has other styling problems (specially on narrow spaces). We should change that to use Slack Attachments.

Translation

How can I translate some of the Button and Notification text, when the plugin is already installed?

Integrate GolangCI-Lint

Mattermost is currently in the process of using golangci-lint as the default linter for all go projects. mattermost-community/mattermost-plugin-autolink#108 serves as an example of how the migration should look like:

  1. Copy .golangci.yml from https://github.com/mattermost/mattermost-plugin-autolink/ into this repository.
  2. Copy Makefile from https://github.com/mattermost/mattermost-plugin-autolink/ into this repository.
  3. Copy build/ from https://github.com/mattermost/mattermost-plugin-autolink/ into this repository.
  4. Run go mod tidy and make dist to ensure the build system works fine.
  5. Update linters-settings.goimports.local-prefixes to the go module path i.e. to github.com/mattermost/mattermost-plugin-todo.
  6. Run make golangci-lint and fix all issues that arise.

Fixing an linter issue is sometimes trivial but can also be quite complicated. There might be cases, where ignoring an issue using issues.exclude-rules is needed. If you don't know how to resolve an error, please reach out to @hanzei on the Mattermost Community Server or ask the question here.

Better support on mobile app

The todo plugin is amazing. And the desktop app allows to add a message from any channel to be added to the todo list. The same support would be amazing on the mobile app too. Any plans for that on the roadmap?

Idea: Mark tasks complete from the list

You can’t randomly complete tasks from viewing the list

ideally, next to each todo item is a link/button that let's the user mark it complete with a single click

ie: each task could have a link next to it saying “done” which then removes the item from the list - for example Hossein's google calendar plugin added text links to let the user interact in line with a post to accept/decline meetings

Improve look on different themes

Some parts of the plugin do not react, or react in a bad manner to themes (see the screenshots attached).

We should make those parts reactive to the theme.

Image Pasted at 2020-6-5 19-30(1)
Image Pasted at 2020-6-5 19-30

Request a task from another user

Sender:

  • /todo request @user some-task
  • the task is added to the sender's todo list in the new "Sent" section; its status is displayed (pending/active). Maybe: display the position (number) in the recipient's "Requests Received" list -- this can be labelled "Priority": number, or "Received", "Declined", "Enqueued"
  • When the recipient acts on the task, the sender is notified with a DM from the bot, and the task is updated (moved to "Completed") or removed from the list

Recipient:

  • receives a DM from the Bot, notifying her of the new task, with action buttons.
  • The task is displayed in the recipient's "Inbox" section, with applicable actions, "╳ (decline)", "🐢 (enqueue)", "✓ Done"

"[x] add to thread" mode

  1. When creating a new TODO from a post (in the modal) add a checkbox [x] add this item to the conversation (thread?).
  1. When the item is created, post a message to the thread - "Marked as Todo for @user"
  2. When the item is popped, post a message to the thread "@user resolved ..."

cc @jwilander @aaronrothschild for further suggestions/edits.

creating a blank item

If adding a todo item by typing
/todo add
then pressing enter by never providing any input a blank todo is added but it cannot be removed form the todo list.

Handle todo message with very long connected text

When a user has a message with very long text with no spaces, the text scrolls to the right.

This an edge case that probably isn't going to be common but should be addressed.

Looking at the image

  1. very long text with scrolling issue (needs solution)
  2. very long text with wrapping (correct)
  3. very long HTML link that wraps correctly
    image

Permalink are not rendered in DM posts when a ToDo is received created via MM post

When a ToDo is received, that was created via a Mattermost post - ToDo Bot sends a DM with a slack-style attachment that contains a permalink to the recipient. The permalink is not being rendered correctly as a link.

Permalink-BotPost

This is not a regression from v0.2.0 It seems like we're relying on the autolink plugin to edit the post? If so, this may have been introduced some months ago when a change was made to except Bot accounts from having their posts edited by autolink in favor of bot's formatting their own posts.

  • Records on the RHS are not affected by this issue
  • ToDo items sent to other users not created via MM post are not affected
  • ToDo items made for yourself are not affected as you don't receive a DM

Steps:

  • Make or find a post
  • Using the post menu, add a To Do based on the post
  • Before saving send the To Do to another test user
  • Login as the other user and see the DM

[MM-25867] Add active status to Header Icon

Most header icons that open the RHS change their color when they have the RHS open. For example, the flagged posts or mentions.

We want Todo icon to change color also depending on the state of the RHS.

You can see a video of what we mean in the Jira Ticket

Missing command in autocomplete suggestion

When typing /todo, the autocomplete suggestion includes the commands add,list,pop but does not show some other commands (for eg. send).

The task is to add all available commands to the suggestion.

Restrict list of recipients to team members

It's possible to send ToDos to evry user of the server, even if direct messages being restricted to members of the users teams.
It would be really nice if the drop-down list only shows members of the team, the user is sending a ToDo from.

If this is configurable somewhere, please point me to the right place.

List does not stay current if changes are made while it's open in multiple clients

Summary

If the To Do List is expanded in more than one client and edits are made, a user must close and re-open the list to see the current state in other clients.

Steps:

  • Login to the same server from desktop and a browser (or 2 different browsers)
  • Open the To Do plugin in both sessions
  • From 1 session add or remove items to your To Do list

Expected To Do list is updated in real-time for the other session

Additional Information

The suggested fix is to should understand/find what websocket notification is missing, and implement it.

Ticket Link

https://mattermost.atlassian.net/browse/MM-22575


If you're interested please comment here and come join our "Contributors" community channel on our daily build server, where you can discuss questions with community members and the Mattermost core team.

New contributors please see our Developer's Guide and our Plugins Guide.

Ghost entry

Hi @jwilander

Really nice plugin. I use it on a daily base.

Unfortunately i have one ghost entry that i can't delete:

Image Pasted at 2019-12-6 12-17

Image Pasted at 2019-12-6 12-16

Any way to remove that?

Because i get now a daily reminder for that :D

Focus does not move properly into text box when adding a new To Do item from RHS

When adding an item to To Do from the RHS the focus does not properly move to the input box in the full page modal. The user must manually move the focus otherwise the focus will remain wherever it was behind the modal.

Steps:

  • Open the To Do list in the RHS
  • Place the focus in the post text box
  • Click the "+" to add a new item
  • Note the text box is out of focus
  • Type some text
    Observed:
  • Text does not appear in the input box
  • When closing the modal you see the text you typed in the post input box

Allow user to Edit existing "To Do" items

It would be useful is users could edit items on their To Do list. This way more details could be added or changed after the item has been saved.

Ideally we could re-open the modal and make edits.

Items do not get deleted when they are no longer referenced

When we create an item, we do two things:

  • Store the item with its ID, createAt and message
  • Store a reference to the item in the order list

But when we remove an item, we just remove the reference, leaving the item in the KVStore.

We should remove the item along with the reference.

Add ability to sort items in To Do list

Adding a feature where items in the To Do list can be sorted would add alot of value.

With sorting, you could sort the items by priority instead of just having them listed oldest to newest.

Idea: `/todo` returns the todo list instead of help text

I feel like /todo should just return the list of todos, not show help. Thats' what /todo help should be for

Bonus: It would be really cool if the todo list was displayed in the RHS when you typed /todo it would give the user a place to keep the list in view and go about their work in MM and check off the tasks as they get done

Support creating subtasks

Lots of times, my tasks consist of smaller tasks that all need to be done before the parent task can be considered done. Along with editing a todo, being able to attach subtasks would make the workflow of managing your todos a much smoother experience.

Personally, I think this feature would make the plugin exponentially more useful, especially if multiple people can add subtasks to the same task, or share the same task and tackle subtasks together. That's certainly out of scope for this ticket though.

Incorporate Reminder Features from Remind-bot into Todo plugin

https://github.com/scottleedavis/mattermost-plugin-remind has more features but needs someone to help (e.g scottleedavis/mattermost-plugin-remind#73). Why not merge with them?

To build on this issue, the key features we should support IMO:

  • /remind [who] [what] [when]
    • /remind [who] [what] in [# (seconds|minutes|hours|days|weeks|months|years)]
    • /remind [who] [what] at [(noon|midnight|one..twelve|00:00am/pm|0000)] (every) [day|date]
    • /remind [who] [what] (on) [(monday-sunday|month&day|m/d/y|d.m.y)] (at) [time]
    • /remind [who] [what] every (other) [monday,...,sunday|weekdays|month&day|m/d|d.m] (at) [time]

Examples of commands: https://github.com/scottleedavis/mattermost-plugin-remind/wiki/Usage

Note:

  • You can specify people or entire channels to be notified at a specific time

Questions:

  • Can we use two different slash commands for these different purposes? One strictly for reminders, and the other for tasks to be completed? Or they are all tasks, and some have reminder notifications set with a date/time + collaborator.
  • Should we make a modal for creating todos, with an optional reminder on them?

If someone is interested in taking this up, please setup a quick call to discuss approaches and considerations or message the channel: https://community-daily.mattermost.com/core/channels/remindbot

Add Todo count and "add todo" button in LHS

Summary

This will look similar to the GitHub and GitLab plugin webapp components.

We can use the font-awesome tasks icon with the count next to it. When you click this, it should open your todos in the RHS like normal. We can then have the font-awesome plus icon to open the create todo modal.

Screenshots

How it is implemented with the GitHub plugin:
image

Plugin does not error gracefully when expecting a username that is not provided

When using a slash command to send a user a ToDo item the plugin does not error gracefully and tell me no user is provided (as is the case with some system slash commands)

Steps:

  • Enable ToDo
  • type /todo send notauser
  • Send the command

Observed: Command with a trigger of '/todo' not found. Click here to send as a message. and panic below which causes a crash.
Expected: The previous build without autocomplete tells me I need a user and provides help text.

{"level":"debug","ts":1592514676.638249,"caller":"wsapi/websocket_handler.go:25","msg":"Websocket request","action":"user_update_active_status"}
{"level":"debug","ts":1592514677.561801,"caller":"wsapi/websocket_handler.go:25","msg":"Websocket request","action":"user_typing"}
{"level":"debug","ts":1592514677.5728362,"caller":"web/handlers.go:89","msg":"Received HTTP request","method":"GET","url":"/api/v4/teams/mkxtxnec8trmu8iiiygeucmfxo/commands/autocomplete_suggestions","request_id":"n88dtqyqobb1jmcqam1sezt3ey"}
{"level":"debug","ts":1592514677.9698281,"caller":"web/handlers.go:89","msg":"Received HTTP request","method":"GET","url":"/api/v4/teams/mkxtxnec8trmu8iiiygeucmfxo/commands/autocomplete_suggestions","request_id":"uet74jukjjrixysknekbm8p3je"}
{"level":"debug","ts":1592514678.1752052,"caller":"web/handlers.go:89","msg":"Received HTTP request","method":"GET","url":"/api/v4/teams/mkxtxnec8trmu8iiiygeucmfxo/commands/autocomplete_suggestions","request_id":"dpyqs5u4aj8zmcqf9eizyw6rah"}
{"level":"debug","ts":1592514687.6415071,"caller":"wsapi/websocket_handler.go:25","msg":"Websocket request","action":"user_typing"}
{"level":"debug","ts":1592514687.663142,"caller":"web/handlers.go:89","msg":"Received HTTP request","method":"POST","url":"/api/v4/commands/execute","request_id":"83zy13c81ir88rkkxj5fdd34ha"}
{"level":"debug","ts":1592514687.6678872,"caller":"plugin/hclog_adapter.go:53","msg":"panic: runtime error: index out of range [0] with length 0","plugin_id":"com.mattermost.plugin-todo"}
{"level":"debug","ts":1592514687.667972,"caller":"plugin/hclog_adapter.go:53","msg":"","plugin_id":"com.mattermost.plugin-todo"}
{"level":"debug","ts":1592514687.6680052,"caller":"plugin/hclog_adapter.go:53","msg":"goroutine 117 [running]:","plugin_id":"com.mattermost.plugin-todo"}
{"level":"debug","ts":1592514687.6680372,"caller":"plugin/hclog_adapter.go:53","msg":"main.(*Plugin).runSendCommand(0xc0000962a0, 0xc000042120, 0x2, 0x2, 0xc000168000, 0x3, 0x4, 0xc000042100)","plugin_id":"com.mattermost.plugin-todo"}
{"level":"debug","ts":1592514687.668073,"caller":"plugin/hclog_adapter.go:53","msg":"\t/Users/dylanhaussermann/go/src/github.com/mattermost/mattermost-plugin-todo/server/command.go:118 +0x72a","plugin_id":"com.mattermost.plugin-todo"}

Include permalink when using the Post-action todo action

Tasks made from the Post "..." menu don’t include a link to the originating convo for maintaining context about the todo item (it would help if you added/concatenated a permalink to the list item when it is created via post-action command).

Pop command throws an "unkwon error" when no todos in the list

Right now, if we have no todos and we run the pop command, we receive the following message:

An unknown error occurred. Please talk to your system administrator for help.

It should show a more descriptive message like:

There are no todos to pop.

Please publish beta releases

Sending a task to another user isn't something that can be done with the current release (the initial release). Publishing beta releases would help. Thanks.

Daily Updates: Button to display RHS

Getting the daily updates is nice, but to check off any items, I need to open the RHS....can we add a button to the message posted by the bot to allow a user to easily get to the RHS with one button click (in community, there is an extra click to hit the dropdown because there is >1 plugin using a button).

Complete items from the list (not at top)

Can’t remove items that aren’t at the top of the list it would be great if list provided a numbered list and adding a ‘done’ command like /todo done 3 would be helpful to complete tasks in the order I get to them, not necessarily the order I captured them in.

Tabs in RHS have the same style as buttons

In the RHS, the Todos and Sent tabs have the same look as the Wont Do and Done button which is very confusing.

Screen Shot 2020-06-04 at 12 52 03 PM

The tabs should be styled to look more like tabs and less like buttons :)

Improve UX for Position text

We should improve the UX when a user is shown the position of items in a list.
This looks a bit confusing. 0/5 Possibly it should be made clear that this is it own piece of information by placing it on a new line. Or the status and position line need some styling.

PostionText

Active users get a JS error and must refresh when Admin enables the plugin (intermittent)

Some users see a JS error when the plugin is enabled and must refresh to see the UI option for To Do bot.
EnableToDo

I've noticed is that not all users seem to be affected and opening a new session with fresh cache does not always repro it.
On my 2nd attempt it was actually the admin enabling the plugin that saw it and not the other user.

Possible steps:

  • Uninstall To Do
  • Re-install To Do (These may be optional I have no idea)
  • Open 2nd browser session
  • As admin enable the plugin
    Observed: JS Error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.