Giter VIP home page Giter VIP logo

standup-raven / standup-raven Goto Github PK

View Code? Open in Web Editor NEW
217.0 7.0 36.0 5.41 MB

A Mattermost plugin for communicating daily standups across teams

Home Page: https://www.standupraven.com

License: Apache License 2.0

Makefile 1.94% Go 65.32% JavaScript 31.49% CSS 1.25%
standup mattermost plugin productivity team meeting mattermost-plugin mattermost-standup-plugin standup-meetings standup-bot

standup-raven's Introduction

A Mattermost plugin for communicating daily standups across teams

CircleCI codecov CII Best Practices

✨ Features

  • Configurable standup window per channel for standup reminders

  • Automatic window open reminders

  • Automatic window close reminders

  • Per-channel customizable

  • Automatic standup reports

  • Multiple standup report formats -

    • User Aggregated - Tasks aggregated by individual users

    • Type Aggregated - Tasks aggregated by type

  • Ability to preview a standup report without publishing it in the channel

  • Ability to manually generate standup reports for any arbitrary date

🧰 Functionality

  • Customize standup sections on per-channel basis, so team members can make it suite their style.

  • Multiple report formats to choose from.

  • Receive a window open notification at the configured window open time to remind you to fill your standup.

  • Receive a reminder at the completion of 80% of the configured window duration to remind you to fill your standup. This message tags those members who haven't yet filled their standup.

  • Receive an auto-generated standup report at the end of the configured window close time. The generated standup contains the names of members who have yet to fill their standup.

  • Allow or restrict standup configuration modification to channel admins (Requires Mattermost EE).

Guides

User Guide

Developer Guide

Ops Guide

TODO

  • Permissions
  • Vacation
  • Periodic reports

Reporting Security Vulnerabilities

Due to the sensitive nature of such vulnerabilities, please refrain from posting them publically over GitHub issues or any other medium.

Be responsible and report them to [email protected] .

🌟 Attribution

Project logo (the Raven) is made by Freepik from www.flaticon.com is licensed by CC 3.0 BY

Contributors ✨

Thanks goes to these wonderful people (emoji key):

jatinjtg
jatinjtg

πŸ’» πŸ› πŸ€” πŸ“– πŸš‡ ⚠️
Deepak Sah
Deepak Sah

πŸ’»
Sandip Agarwal
Sandip Agarwal

πŸ’»
Chetanya Kandhari
Chetanya Kandhari

πŸ’» πŸ› πŸ€” πŸ“–
Amit Yadav
Amit Yadav

πŸ’»
SezalAgrawal
SezalAgrawal

πŸ’»
Theodore S Lindsey
Theodore S Lindsey

πŸ’»
Amal Alkhamees
Amal Alkhamees

πŸ’»
henzai
henzai

πŸ›
Pavel HΓΌbner
Pavel HΓΌbner

πŸ€” πŸ““ πŸ“’
tgly307
tgly307

πŸ€” πŸ›
Alex Tzonkov
Alex Tzonkov

πŸ€” πŸ›
Sonam Singh
Sonam Singh

πŸ› πŸ€”
Andrew Greenwood
Andrew Greenwood

πŸ€”
mihai-satmarean
mihai-satmarean

πŸ€”

This project follows the all-contributors specification. Contributions of any kind are welcome!

standup-raven's People

Contributors

abbas-mehdi-naqvi avatar amalkh5 avatar anmolghosh avatar ayadav avatar ayusht2810 avatar bbodenmiller avatar chetanyakan avatar dependabot[bot] avatar goku321 avatar harshilsharma63 avatar jatinkksharma avatar leonheess avatar manojmalik20 avatar raghavaggarwal2308 avatar ragingroosevelt avatar sandipagarwal avatar sezalagrawal avatar snyk-bot avatar

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  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

standup-raven's Issues

Migrate plugin from XMLHttpRequest

Snippet from Mattermost logs -

CSRF Check failed for request - Please migrate your plugin to either send a CSRF Header or Form Field, XMLHttpRequest is deprecated

Follow the implementation from here - mattermost/mattermost#9192 and implement CSRF tokens for plugin requests.

[PROPOSAL] Implement Permission System for Configuring Standups

Is your feature request related to a problem? Please describe.
Any member of a standup channel can update channel standup config. This may not be desirable for some organizations.

Describe the solution you'd like
Enterprise Mattermost installations allow granting the user a role of system admin or channel admin. We can use this existing permission feature to only allow channel admins to configure standards for a channel. The team lead can be made channel admin with others remain with the regular role of channel members.

PROPOSAL - Generate a report on window end without waiting for everyone to submit standup information

Is your feature request related to a problem? Please describe.
When some of our co-workers is on a vacation, the report is waiting for them to submit standup info too. Then the report is not automatically generated which means someone else should trigger the report action manually.

Describe the solution you'd like
Set a flag (boolean) "Wait for everyone to participate" true/false, so the bot will wait or not for the report at window close accordingly.

BUG - Standup modal stays in loading state in channels with no standup configured

Summary
Standup modal stays in loading state in channels with no standup configured

Steps To Reproduce

  1. Navigate to any channel where standup is not configured.
  2. Open the standup modal by clicking on the Raven icon in channel header.

Expected behavior
The standup modal waits for the config API call to complete and shows the message that standup is not configured for this channel.

Observed Behavior
Standup modal stays in loading state.

Environment

  • Mattermost version: 5.12.4
  • OS: MacOC
  • Platform: browser
  • Browser: Firefox
  • Platform Version: 70.0

Update makefile for new releases

Some changes are done in the release process. Changelogs are now generated using what-the changelog package and the result from the package is passed in the ghr body tag.

BUG - Themes not considered by standup raven

Summary
When a user has selected dark theme fr Mattermost, some of the standup raven text become unreadable.

Steps To Reproduce
Steps to reproduce the behavior:

  1. Change your mattermost display theme to one of the default dark ones.
  2. run /standupconfig
  3. See drop down text, or rather 'can't see'

Expected behavior
Easily see the text in the drop downs

Observed Behavior
Text is dark blending in with dark background

Screenshots
image

Environment (if applicable):

  • Using the Windows Desktop Application for Mattermost

PROPOSAL - Use bot account instead of normal user

Is your feature request related to a problem? Please describe.
Currently admins have to create a user account for this plugin to work. They also have to enable two setting. See https://github.com/standup-raven/standup-raven/blob/master/docs/installation.md#mattermost-configuration. Both put additional work on the admin.

Describe the solution you'd like
This can be reduced by the plugin automatically creating a Raven bot account and using this one to post the messages.

Describe alternatives you've considered
Make the bot username configurable.

BUG - exec format error

Filing a bug on behalf of @dangtu1795

I'm runing version 5.11 run by docker-compose on ubuntu 16.04 .Here is the error I encountered:

{"level":"error","ts":1558197389.5647445,"caller":"mlog/log.go:172","msg":"Unable to activate plugin","plugin_id":"standup-raven","error":"unable to start plugin: standup-raven: fork/exec /mattermost/plugins/standup-raven/server/plugin.exe: exec format error","errorVerbose":"fork/exec /mattermost/plugins/standup-raven/server/plugin.exe: exec format error\nunable to start plugin: standup-raven\ngithub.com/mattermost/mattermost-server/plugin.(*Environment).Activate\n\t/go/src/github.com/mattermost/mattermost-server/plugin/environment.go:216\ngithub.com/mattermost/mattermost-server/app.(*App).SyncPluginsActiveState\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:95\ngithub.com/mattermost/mattermost-server/app.(*App).InitPlugins.func2\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:172\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners.func1\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:35\nsync.(*Map).Range\n\t/usr/local/go/src/sync/map.go:333\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:33\ngithub.com/mattermost/mattermost-server/config.(*commonStore).set\n\t/go/src/github.com/mattermost/mattermost-server/config/common.go:80\ngithub.com/mattermost/mattermost-server/config.(*FileStore).Set\n\t/go/src/github.com/mattermost/mattermost-server/config/file.go:97\ngithub.com/mattermost/mattermost-server/app.(*Server).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:53\ngithub.com/mattermost/mattermost-server/app.(*App).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:59\ngithub.com/mattermost/mattermost-server/app.(*App).EnablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:245\ngithub.com/mattermost/mattermost-server/api4.enablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/api4/plugin.go:187\ngithub.com/mattermost/mattermost-server/web.Handler.ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/web/handlers.go:167\ngithub.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux.(*Router).ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux/mux.go:162\ngithub.com/mattermost/mattermost-server/app.(*RateLimiter).RateLimitHandler.func1\n\t/go/src/github.com/mattermost/mattermost-server/app/ratelimit.go:107\nnet/http.HandlerFunc.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:1995\nnet/http.serverHandler.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:2774\nnet/http.(*conn).serve\n\t/usr/local/go/src/net/http/server.go:1878\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1337"}

@harshilsharma please help me.
Additional information:

go version go1.12.2 linux/amd64

Bump js-yaml from 3.12.1 to 3.13.1 in /webapp

Bumps js-yaml from 3.12.1 to 3.13.1.

Changelog

Sourced from js-yaml's changelog.

3.13.1 / 2019-04-05

  • Fix possible code execution in (already unsafe) .load(), #480.

3.13.0 / 2019-03-20

  • Security fix: safeLoad() can hang when arrays with nested refs
    used as key. Now throws exception for nested arrays. #475.

3.12.2 / 2019-02-26

  • Fix noArrayIndent option for root level, #468.
Commits

BUG - mattermost crash when modify sections after user add tasks

Summary
when user modify the sections use /standupconfig after someone add tasks, the mattermost will crash when click raven button on channel top.

Steps To Reproduce
Steps to reproduce the behavior:

  1. install plugin and set the config use /standupconfig ,for example set sections "yesterday" and "today"
  2. add member use /standupaddmembers , for example add userA to group
  3. userA add tasks by click raven button on channel top
  4. modify sections use /standupconfig, for example delete "yestoday"
  5. userA click the button and mattermost crash, must reload the view.

Expected behavior
I think maybe it should clear all tasks set before and let user add task again.

Observed Behavior
mattermost crash

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (if applicable):

  • OS: windows10 desktop app 4.2.0

BUG - Installation of 1.4.0 breaks on latest GitLab Mattermost rollback fails.

Summary

While not technically a coding bug, a vast slice of Mattermost users are using MM via the version included with the GitLab Omnibus package. Gitlab 12.0 was just released (always on the 22nd of the month) with Mattermost 5.11 included.. but v 1.4.0 of standup-raven requires 5.12. Thus many users upgrading today will get an error that the plugin requires 5.12.

You can see the version matrix here: https://docs.gitlab.com/omnibus/gitlab-mattermost/

Also rolling back also fails (via uploading the old plugin through Management UI pane in the System Console). I am not sure if this is a bug in the Mattermost console, a "design feature" or something missing in standup-raven plugin's rollback process.

Expected behavior
-> Ensure you are testing / supporting back to the MM version included with the latest Gitlab Release.
-> Clearly indicate on the releases page the value of minimum_server_ver to warn users not to upgrade until their server meets your requirements..
-> Possibly open bugs with mattermost as one would think upgrading should be stopped cold if the currently running server version is lower than what is defined in a plugins definition.

Observed Behavior
Upgrading to 1.4.0 results in:

2019-06-25_07:02:48.40756 {"level":"error","ts":1561446168.4074988,"caller":"mlog/log.go:172","msg":"Unable to activate plugin","plugin_id":"standup-raven","error":"plugin requires Mattermost 5.12.0: standup-raven"}

Rolling back the plugin via the Management UI in System Console lowers the installed version back to 1.3.0 but doesn't lower the min_server_version to the previous value resulting in the same failure after rollback.

WORKAROUND
Manually edit /var/opt/gitlab/mattermost/plugins/standup-raven/plugin.json to lower the min_server_version to the version of your server.

Environment

  • Mattermost version: e.g. 5.10 - Gitlab 11.11
  • OS: Ubuntu

PROPOSAL - Use sub commands instead of multiple commands

Is your feature request related to a problem? Please describe.
The list of slash commands gets long, when this plugin is enabled. It currently adds six slash commands. More may follow.

Describe the solution you'd like
I propose to move all commands under one commands called /standup. E.g. it would be /standup config instead of /standupconfig.

Additional context
Inspiration can be taken from the GitHub plugin. See https://github.com/mattermost/mattermost-plugin-github/blob/master/server/command.go#L15-L34

BUG - user profile image missing

Summary
user profile image missing in channel.
image
(my bot name is github)

Steps To Reproduce
Steps to reproduce the behavior:

  1. install plugin
  2. set plugin config ( bot name, time zone)
  3. use /standupconfig and /standupaddmembers to activate plugin and add myself to group
  4. When plugin send this message, profile image is missing (got 403 forbidden error).

Expected behavior
What you expected to happen.

Observed Behavior
What actually happened.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (if applicable):

  • OS: windows and andriod
  • Browser: chrome
  • Version 73

I found the url of profile image is https://mysite.com/api/v4/image?url=%2Fplugins%2Fstandup-raven%2Fstatic%2Flogo.png, it doesn't work. And I tried the url https://mysite.com/api/v4/image?url=https%3A%2F%2Fmysite.com%2Fplugins%2Fstandup-raven%2Fstatic%2Flogo.png, it works.
So I guess maybe this is a bug of missing something in icon config.

PROPOSAL - Open standup window

We are implementing standup bot for the whole company - however, many people complain they cannot fill up their standup tasks in the evening (we do regular reports at 9 am). Raven Bot does not allow to set the starting window earlier than the closing window (so there could be like 9 pm till 9 am time frame).

It would be nice to:

  1. Allow wide time frames from the previous day
  2. Allow the possibility to disable the standup window whatsoever - so anything after report time (e.g. 9 am) will be aggregated for the next day ... it can be done in a way when the report window is set 0:00-0:00

What do you think?

BUG - timezone issue prevents plugin to start

Summary
I can't start the plugin on Mattermost team edition Docker and the error log is about a time zone issue. I tried various time zone settings.

suspected reason
Contrary to the Mattermost Docker install instructions I am not bridging the timezone file, as my Docker volume is in a seperate network with no access to the host system / "bridge" network.
Alternatively it could be due to running Mattermost with MySQL 5.7?

Error Log
":"error","ts":1558342988.0937357,"caller":"mlog/log.go:172","msg":"Unable to activate plugin","plugin_id":"standup-raven","error":"unable to start plugin: standup-raven: unknown time zone Etc/UTC","errorVerbose":"unknown time zone Etc/UTC\nunable to start plugin: standup-raven\ngithub.com/mattermost/mattermost-server/plugin.(*Environment).Activate\n\t/go/src/github.com/mattermost/mattermost-server/plugin/environment.go:216\ngithub.com/mattermost/mattermost-server/app.(*App).SyncPluginsActiveState\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:95\ngithub.com/mattermost/mattermost-server/app.(*App).InitPlugins\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:126\ngithub.com/mattermost/mattermost-server/app.(*Server).RunOldAppInitalization.func6\n\t/go/src/github.com/mattermost/mattermost-server/app/server_app_adapters.go:147\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners.func1\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:35\nsync.(*Map).Range\n\t/usr/local/go/src/sync/map.go:333\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:33\ngithub.com/mattermost/mattermost-server/config.(*commonStore).set\n\t/go/src/github.com/mattermost/mattermost-server/config/common.go:80\ngithub.com/mattermost/mattermost-server/config.(*FileStore).Set\n\t/go/src/github.com/mattermost/mattermost-server/config/file.go:97\ngithub.com/mattermost/mattermost-server/app.(*Server).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:53\ngithub.com/mattermost/mattermost-server/app.(*App).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:59\ngithub.com/mattermost/mattermost-server/app.(*App).EnablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:245\ngithub.com/mattermost/mattermost-server/api4.enablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/api4/plugin.go:187\ngithub.com/mattermost/mattermost-server/web.Handler.ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/web/handlers.go:167\ngithub.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux.(*Router).ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux/mux.go:162\nnet/http.serverHandler.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:2774\nnet/http.(*conn).serve\n\t/usr/local/go/src/net/http/server.go:1878\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1337"}

Environment (if applicable):

  • OS: Linux Docker

BUG - Dropdown items in standup config dialog do not navigate by typing

Summary
Dropdown items in standup config dialog do not navigate by typing

Steps To Reproduce
Steps to reproduce the behavior:

  1. Open standup config dialog /standup config.
  2. Open any dropdown, timezone for example.
  3. Start typing the any desired timezone to be selected.

Expected behavior
The option being typed should be navigated to in open dropdown list.

Observed Behavior
The option being typed doesn't select as is expected from any dropdown.

Screenshots
NA

Environment

  • Mattermost version: 5.12
  • OS: MacOS
  • Platform: browser
  • Browser: Firefox

BUG - JS errors in console

Summary
A one-line description of what the bug is.

Steps To Reproduce
Steps to reproduce the behavior:

  1. Install the plugin
  2. Go into a channel that has a standup configured

Expected behavior
No errors

Observed Behavior
Errors in JS console:

Errors:
Warning: Failed prop type: The prop `visible` is marked as required in `StandupModal`, but its value is `undefined`.
    in StandupModal (created by Connect(StandupModal))
    in Connect(StandupModal) (created by Pluggable)
    in Pluggable (created by Connect(Pluggable))
    in Connect(Pluggable) (created by ChannelController)
    in div (created by ChannelController)
    in div (created by ChannelController)
    in ChannelController (created by Context.Consumer)
    in Route (created by NeedsTeam)
    in Switch (created by NeedsTeam)
    in NeedsTeam (created by Connect(NeedsTeam))
    in Connect(NeedsTeam) (created by Context.Consumer)
    in Route (created by withRouter(Connect(NeedsTeam)))
    in withRouter(Connect(NeedsTeam)) (created by Context.Consumer)
    in LoggedIn (created by Connect(LoggedIn))
    in Connect(LoggedIn) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route (created by LoggedInRoute)
    in LoggedInRoute (created by Root)
    in Switch (created by Root)
    in IntlProvider (created by IntlProvider)
    in IntlProvider (created by Connect(IntlProvider))
    in Connect(IntlProvider) (created by Root)
    in Root (created by Connect(Root))
    in Connect(Root) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route
    in Router
    in Provider checkPropTypes.js:20
    printWarning checkPropTypes.js:20
    checkPropTypes checkPropTypes.js:82
    React 29
    Redux 4
    dispatchPluginComponentAction registry.js:23
    registerRootComponent registry.js:53
    initialize index.jsx:18
    initializePlugin index.js:106
    onLoad index.js:76
Warning: Failed prop type: The prop `id` is required to make `Tooltip` accessible for users of assistive technologies such as screen readers.
    in Tooltip (created by StandupModal)
    in StandupModal (created by Connect(StandupModal))
    in Connect(StandupModal) (created by Pluggable)
    in Pluggable (created by Connect(Pluggable))
    in Connect(Pluggable) (created by ChannelController)
    in div (created by ChannelController)
    in div (created by ChannelController)
    in ChannelController (created by Context.Consumer)
    in Route (created by NeedsTeam)
    in Switch (created by NeedsTeam)
    in NeedsTeam (created by Connect(NeedsTeam))
    in Connect(NeedsTeam) (created by Context.Consumer)
    in Route (created by withRouter(Connect(NeedsTeam)))
    in withRouter(Connect(NeedsTeam)) (created by Context.Consumer)
    in LoggedIn (created by Connect(LoggedIn))
    in Connect(LoggedIn) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route (created by LoggedInRoute)
    in LoggedInRoute (created by Root)
    in Switch (created by Root)
    in IntlProvider (created by IntlProvider)
    in IntlProvider (created by Connect(IntlProvider))
    in Connect(IntlProvider) (created by Root)
    in Root (created by Connect(Root))
    in Connect(Root) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route
    in Router
    in Provider checkPropTypes.js:20
Warning: Failed prop type: Invalid prop `bsStyle` of value `` supplied to `Alert`, expected one of ["success","warning","danger","info"].
    in Alert (created by StandupModal)
    in StandupModal (created by Connect(StandupModal))
    in Connect(StandupModal) (created by Pluggable)
    in Pluggable (created by Connect(Pluggable))
    in Connect(Pluggable) (created by ChannelController)
    in div (created by ChannelController)
    in div (created by ChannelController)
    in ChannelController (created by Context.Consumer)
    in Route (created by NeedsTeam)
    in Switch (created by NeedsTeam)
    in NeedsTeam (created by Connect(NeedsTeam))
    in Connect(NeedsTeam) (created by Context.Consumer)
    in Route (created by withRouter(Connect(NeedsTeam)))
    in withRouter(Connect(NeedsTeam)) (created by Context.Consumer)
    in LoggedIn (created by Connect(LoggedIn))
    in Connect(LoggedIn) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route (created by LoggedInRoute)
    in LoggedInRoute (created by Root)
    in Switch (created by Root)
    in IntlProvider (created by IntlProvider)
    in IntlProvider (created by Connect(IntlProvider))
    in Connect(IntlProvider) (created by Root)
    in Root (created by Connect(Root))
    in Connect(Root) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route
    in Router
    in Provider checkPropTypes.js:20
Loaded standup-raven plugin index.js:77:12
Warning: Failed prop type: The prop `id` is required to make `Dropdown` accessible for users of assistive technologies such as screen readers.
    in Dropdown (created by Uncontrolled(Dropdown))
    in Uncontrolled(Dropdown) (created by SplitButton)
    in SplitButton (created by ConfigModal)
    in div (created by FormGroup)
    in FormGroup (created by ConfigModal)
    in span (created by ConfigModal)
    in div (created by ConfigModal)
    in div (created by ModalBody)
    in ModalBody (created by ConfigModal)
    in div (created by ModalDialog)
    in div (created by ModalDialog)
    in div (created by ModalDialog)
    in ModalDialog (created by Modal)
    in Transition (created by Fade)
    in Fade (created by DialogTransition)
    in DialogTransition (created by Modal)
    in RefHolder (created by Modal)
    in div (created by Modal)
    in Portal (created by Modal)
    in Modal (created by Modal)
    in Modal (created by ConfigModal)
    in ConfigModal (created by Connect(ConfigModal))
    in Connect(ConfigModal) (created by Pluggable)
    in Pluggable (created by Connect(Pluggable))
    in Connect(Pluggable) (created by ChannelController)
    in div (created by ChannelController)
    in div (created by ChannelController)
    in ChannelController (created by Context.Consumer)
    in Route (created by NeedsTeam)
    in Switch (created by NeedsTeam)
    in NeedsTeam (created by Connect(NeedsTeam))
    in Connect(NeedsTeam) (created by Context.Consumer)
    in Route (created by withRouter(Connect(NeedsTeam)))
    in withRouter(Connect(NeedsTeam)) (created by Context.Consumer)
    in LoggedIn (created by Connect(LoggedIn))
    in Connect(LoggedIn) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route (created by LoggedInRoute)
    in LoggedInRoute (created by Root)
    in Switch (created by Root)
    in IntlProvider (created by IntlProvider)
    in IntlProvider (created by Connect(IntlProvider))
    in Connect(IntlProvider) (created by Root)
    in Root (created by Connect(Root))
    in Connect(Root) (created by AsyncComponent)
    in AsyncComponent
    in Unknown (created by Context.Consumer)
    in Route
    in Router
    in Provider

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (if applicable):

  • OS: linux
  • Browser: Firefox
  • Mattermost-Server: master

PROPOSAL | UX - auto save standup as draft to avoid accidental loss of information

Is your feature request related to a problem? Please describe.
Sometimes users fill a section, then save the standup because they want to fill the other sections later or they need more information. This sometimes causes their incomplete reports to be included in standup report.

Describe the solution you'd like
Add a Save Draft option which allows users to, save draft standups. This can be combined with auto-save feature where a draft is automatically saved in regular intervals.

Describe alternatives you've considered
NA

Additional context
NA

Automatically Generate sentry.properties from build_properties.json

Is your feature request related to a problem? Please describe.
Currently one needs to update both build_properties.json and webapp/sentry.properties (from Sentry CLI) for configuring Sentry. This is not the smoothest experience.

Describe the solution you'd like
webapp/sentry.properties can be automatically generated from build_properties.json.

Describe alternatives you've considered
NA

Additional context
NA

Cannot save standup config

Hi
After I enabled the standup-raven plugin in our Mattermost, I tried to run the /standupconfig in a new channel I just created but failed. I got an error "An error occurred while saving standup config. Unauthorized". I have no idea about this issue, can anyone help take a look?

Mattermost: 5.12.0
Standup-varen: 1.3.0

PROPOSAL - Make the Timezone be channel specific

Is your feature request related to a problem? Please describe.
Today our instance of Mattermost is used across many different timezones. Having the stand up raven only have a single global timezone does not work well for all our different teams.

Describe the solution you'd like
It would be great if we can configure the timezone per channel, so the standup window would be channel/timezone specific.

Describe alternatives you've considered
Not sure what else can be done to fix this.

Additional context
N/A

PROPOSAL - don't require stand-up's for people in holiday

Is your feature request related to a problem? Please describe.
We would like to be able to not require standups for people in holiday

Describe the solution you'd like
Connect with Outlook calendar and don't request standups for people absent

Describe alternatives you've considered
Just a nice to have

Additional context

BUG - Bot Profile Images are not loading

Summary
When automatic reminder messages, reports get posted profile images of the bot is not getting loaded.

Expected behavior
Profile images should load.

Observed Behavior
Profile images not loading.

Screenshots
image
image

Environment

  • Mattermost version: 5.10.0
  • OS: Windows 10 Pro
  • Platform: browser, desktop app
  • Browser (if applicable): chrome

Release v1.5

Release v1.5

Scheduled Release Date: 22 July 2019

Daily Tasks

Mattermost Release Day

These are to be performed on the day Mattermost release is published.

  • Code freeze to be done on this day. No more changes will be included in this release other than RC bug fixes.
  • Create a new branch from master named release-x.y.z where x.y.z is the version being released.
  • Create release issue on GitHub based on the release issue template.
  • Update release issue with release cut date. This is the date when release branch is first created on remote.
  • Update release issue with scheduled release date.
Intermediate Days

These are to be performed starting as soon as Mattermost release day tasks are complete, until
Standup Raven scheduled release date.

  • Perform end to end testing on minimum up to the latest supported Mattermost version following recommended testing process.
  • Create GiHub issues for any bugs found.
  • Once testing is complete, begin with the bug fixes.
  • Cherrypick any bug fix which is applicable to master branch or other release.
Release Day

These are to be done on Standup Raven release day.

  • Generate release notes locally using what-the-changelog. Keep this handy as it will be needed later.
  • Create tag on release branch as vx.y.z. This will trigger the CircleCI release job.
  • Monitor the CircleCI job for success or faliure.
  • Once the CircleCI job is complete, verify that a new GitHub release has been created.
  • Verify that the GitHub release contains plugin distributions in attachments.
  • Use the changelog generated in earlier step along with changelog template, add the changelog to the GitHub release.
  • Update plugin version number on master for next release.
  • Close the release issue.

BUG - unknown time zone

Summary
I set the time zone Asia/Shanghai in plugin, and the log throw error "config unknown time zone"

{"level":"error","ts":1556557748.1725073,"caller":"mlog/sugar.go:23","msg":"unknown time zone Asia/Shanghai","plugin_id":"standup-raven"}

I also tried some other time zone, all failed without UTC.

Steps To Reproduce
Steps to reproduce the behavior:

  1. install plugin
  2. modify the plugin config
  3. See error

Expected behavior
What you expected to happen.

Observed Behavior
What actually happened.

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (if applicable):

  • OS: windows 10 desktop app 4.2.0

PROPOSAL - Option to disable reminders

Today, Raven bot has 2 reminders:

  1. Message Please start filling your standup!
  2. Message ... - a gentle reminder to fill your standup.

It would be nice to add the configuration option to switch them off. It should be doable on a per-channel basis.

BUG - Bot allows same user to be added multiple times.

Summary
It is possible to successfully add User X twice to a standup configuration.. their answers are duplicated in the report.

Steps To Reproduce
Self explanatory.

Expected behavior
The bot should ignore requests to add the same user if already a member of the report.

Observed Behavior
User is listed multiple times in the /standupviewconfig

Members: userx, userx, usery, usery

Environment (if applicable):
Can be provided if necessary but isn't likely environment specific.

Use changelog generation tool

Using a changelog generation tool will -

  1. eliminate one mundane task.
  2. make changelogs consistent and neat.
  3. actually make having a changelog in the first place.

Requirements to be satisfied -

  1. Enforce good issue practices - using and updating correct labels.
  2. Can be incorporated as a CI task.
  3. Ideally, should run on JavaScript or Golang to prevent extra system dependencies, but not a hard limitation.
  4. Supports GitHub releases

https://github.com/github-changelog-generator/github-changelog-generator#usage looks interesting and simple enough.

BUG - Unable to start plugin

Summary
This plugin failed to start. Check your system logs for errors:

2019-05-15T09:18:27.750+0200	debug	web/handlers.go:58	POST - /api/v4/plugins/standup-raven/enable
2019-05-15T09:18:27.750+0200	debug	mlog/log.go:160	CSRF Header check failed for request - Please upgrade your web application or custom app to set a CSRF Header
2019-05-15T09:18:27.757+0200	debug	jobs/workers.go:108	Workers received config change.
2019-05-15T09:18:27.757+0200	debug	jobs/schedulers.go:185	Schedulers received config change.
2019-05-15T09:18:27.875+0200	debug	jobs/schedulers.go:167	Next run time for scheduler PluginsScheduler: 2019-05-15 09:19:27.875494495 +0200 CEST m=+1273.577636571
2019-05-15T09:18:27.876+0200	debug	jobs/schedulers.go:167	Next run time for scheduler MigrationsScheduler: <nil>
2019-05-15T09:18:27.899+0200	debug	plugin/hclog_adapter.go:32	starting plugin	{"plugin_id": "standup-raven", "wrapped_extras": "pathplugins/standup-raven/server/plugin.exeargs[plugins/standup-raven/server/plugin.exe]"}
2019-05-15T09:18:27.902+0200	debug	plugin/hclog_adapter.go:32	plugin started	{"plugin_id": "standup-raven", "wrapped_extras": "pathplugins/standup-raven/server/plugin.exepid18973"}
2019-05-15T09:18:27.902+0200	debug	plugin/hclog_adapter.go:32	waiting for RPC address	{"plugin_id": "standup-raven", "wrapped_extras": "pathplugins/standup-raven/server/plugin.exe"}
2019-05-15T09:18:27.938+0200	debug	plugin/hclog_adapter.go:32	using plugin	{"plugin_id": "standup-raven", "wrapped_extras": "version1"}
2019-05-15T09:18:27.939+0200	debug	plugin/hclog_adapter.go:32	plugin address	{"plugin_id": "standup-raven", "wrapped_extras": "address/tmp/plugin624549949networkunixtimestamp2019-05-15T09:18:27.937+0200"}
2019-05-15T09:18:27.950+0200	debug	plugin/hclog_adapter.go:32	plugin process exited	{"plugin_id": "standup-raven", "wrapped_extras": "pathplugins/standup-raven/server/plugin.exepid18973"}
2019-05-15T09:18:27.951+0200	error	mlog/log.go:172	Unable to activate plugin	{"plugin_id": "standup-raven", "error": "unable to start plugin: standup-raven: Bot username cannot be empty", "errorVerbose": "Bot username cannot be empty\nunable to start plugin: standup-raven\ngithub.com/mattermost/mattermost-server/plugin.(*Environment).Activate\n\t/go/src/github.com/mattermost/mattermost-server/plugin/environment.go:216\ngithub.com/mattermost/mattermost-server/app.(*App).SyncPluginsActiveState\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:95\ngithub.com/mattermost/mattermost-server/app.(*App).InitPlugins.func2\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:172\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners.func1\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:35\nsync.(*Map).Range\n\t/usr/local/go/src/sync/map.go:333\ngithub.com/mattermost/mattermost-server/config.(*emitter).invokeConfigListeners\n\t/go/src/github.com/mattermost/mattermost-server/config/emitter.go:33\ngithub.com/mattermost/mattermost-server/config.(*commonStore).set\n\t/go/src/github.com/mattermost/mattermost-server/config/common.go:80\ngithub.com/mattermost/mattermost-server/config.(*FileStore).Set\n\t/go/src/github.com/mattermost/mattermost-server/config/file.go:97\ngithub.com/mattermost/mattermost-server/app.(*Server).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:53\ngithub.com/mattermost/mattermost-server/app.(*App).UpdateConfig\n\t/go/src/github.com/mattermost/mattermost-server/app/config.go:59\ngithub.com/mattermost/mattermost-server/app.(*App).EnablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/app/plugin.go:245\ngithub.com/mattermost/mattermost-server/api4.enablePlugin\n\t/go/src/github.com/mattermost/mattermost-server/api4/plugin.go:187\ngithub.com/mattermost/mattermost-server/web.Handler.ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/web/handlers.go:167\ngithub.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux.(*Router).ServeHTTP\n\t/go/src/github.com/mattermost/mattermost-server/vendor/github.com/gorilla/mux/mux.go:162\ngithub.com/mattermost/mattermost-server/vendor/github.com/rs/cors.(*Cors).Handler.func1\n\t/go/src/github.com/mattermost/mattermost-server/vendor/github.com/rs/cors/cors.go:207\nnet/http.HandlerFunc.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:1995\nnet/http.serverHandler.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:2774\nnet/http.(*conn).serve\n\t/usr/local/go/src/net/http/server.go:1878\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1337"}
2019-05-15T09:18:27.969+0200	error	mlog/log.go:172	RPC call OnConfigurationChange to plugin failed.	{"plugin_id": "com.github.scottleedavis.mattermost-plugin-spybot", "error": "connection is shut down"}
2019-05-15T09:18:27.980+0200	debug	app/email_batching.go:74	Email batching job starting. Checking for pending emails every 30 seconds.
2019-05-15T09:18:27.987+0200	debug	app/email_batching.go:74	Email batching job starting. Checking for pending emails every 30 seconds.
2019-05-15T09:18:27.987+0200	debug	jobs/workers.go:108	Workers received config change.
2019-05-15T09:18:27.987+0200	debug	jobs/schedulers.go:185	Schedulers received config change.
2019-05-15T09:18:28.406+0200	debug	jobs/schedulers.go:167	Next run time for scheduler PluginsScheduler: 2019-05-15 09:19:28.40643554 +0200 CEST m=+1274.108577632
2019-05-15T09:18:28.408+0200	debug	jobs/schedulers.go:167	Next run time for scheduler MigrationsScheduler: <nil>
2019-05-15T09:18:28.444+0200	error	mlog/log.go:172	RPC call OnConfigurationChange to plugin failed.	{"plugin_id": "com.github.scottleedavis.mattermost-plugin-spybot", "error": "connection is shut down"}
2019-05-15T09:18:28.890+0200	debug	jobs/schedulers.go:167	Next run time for scheduler PluginsScheduler: 2019-05-15 09:19:28.890021019 +0200 CEST m=+1274.592163064
2019-05-15T09:18:31.868+0200	debug	web/handlers.go:58	GET - /api/v4/logs

Steps To Reproduce
Steps to reproduce the behavior:

  1. Go to 'System Console'
  2. Click on 'Plugins > Upload the plugin'
  3. Scroll down to 'plugin, and enable it'
  4. See error

Expected behavior
What you expected to happen.
Install plugin
Observed Behavior
What actually happened.
Error occurred
Screenshots
If applicable, add screenshots to help explain your problem.
image

Environment (if applicable):
Running latest version of Mattermost stable

  • Mattermost Version: 5.10.0
  • OS: OSX Mojave Mattermost Desktop APP
  • Browser Desktop App OSX
  • Version NA

Add docs for enabling Sentry

The plugin allows devs to plug in their own Sentry account for error monitoring by themselves. This is currently not documented.

Add documentation for enabling and configuring custom Sentry in the plugin.

Add option to insert standup schedule in channel header

Is your feature request related to a problem? Please describe.
New members may not know the standup schedule. Also, existing members may not know when and if the standup schedule changes.

Describe the solution you'd like
Add option in standup config to insert current standup schedule in channel header. It may also make sense to send notification to the channel when standup schedule changes.

BUG - Adding a user more than once, shows them that many times.

Summary
If a user is added more than once in the standup config, s/he is shown that many times.

Steps To Reproduce
Steps to reproduce the behavior:

  1. Run /standupaddmembers @sandip.agarwal
  2. Run the above again
  3. Run /standupviewconfig
  4. See the output to have more than one entry of the above user.

Expected behavior
Each user should have only one entry.

Observed Behavior
Users added more than once, show up that many times.

Screenshots
Screenshot 2019-05-30 at 5 44 07 PM
(See for yugank.sharma)

Environment

  • Mattermost version: e.g. 3.7.1
  • OS: macOS 10.14.5
  • Platform: desktop app
  • Browser (if applicable): NA
  • Platform Version: e.g. -

PROPOSAL - Add slash commands for submitting standup information.

Is your feature request related to a problem? Please describe.
I'm frustrated that I have to use the UI to submit my stand up but I can configure the tool with slash commands.. I'd like to have both an interactive and a non interactive way to submit the standup using slash commands.

Describe the solution you'd like
/standupsubmit_gui - Opens the current modal dialog without needing to click the extension menu in the UI.
/standupsubmit_cli "some logical format to submit responses in text format" - Ability to drop the report into the system in one line of txt.

BUG - make build causing `/` to be copied into archive

Summary
The regex in Makefile is not working on older versions of grep (2.5.1) and causes all contents of root (/) to be copied into the archive.

Steps To Reproduce
Steps to reproduce the behavior:

  1. run make dist on a system with grep 2.5.

Expected behavior
Regex used in Makefile with grep should work with older versions of grep as well as that's still being used on many systems.

Observed Behavior
Regex used in Makefile with grep causes unwanted behavior with older versions of grep.

BUG - No placeholder value available for timezone field in system console

Summary
No placeholder value available for timezone field in system console.

Steps To Reproduce

  1. Install Standup Raven
  2. Navigate to Standup Raven configuration section in system console.
  3. Notice the value displayed for Time Zone field.

Expected behavior
Time zone field should indicate that no value is currently saved if it is so.

Observed Behavior
Time zone field shows the first time zone as the selected value even when no value is actually saved.

This may cause confusion for a system admin whether that value being displayed is selected or is just a placeholder. Having a dedicated placeholder will solve this issue.

PROPOSAL | UX - auto-focus row when changing sections in standup dialog

Is your feature request related to a problem? Please describe.
Needing to use the mouse just for focusing on a row is not a perfect UX.

Describe the solution you'd like
When switching sections, auto-focus on the row to allow users to start typing right-away. This can be the last row in the order or the last row user was on.

Describe alternatives you've considered
NA

Additional context
NA

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.